Spaces:
Build error
Build error
James McCool commited on
Commit ·
6e003bf
1
Parent(s): 7a861ff
Adding WNBA support
Browse files- app.py +97 -1
- database.py +3 -2
- database_queries.py +520 -0
app.py
CHANGED
|
@@ -546,6 +546,51 @@ def define_fd_nfl_showdown_slates():
|
|
| 546 |
slate_name_lookup = dict(zip(slate_names, unique_slates))
|
| 547 |
return slate_names, slate_name_lookup
|
| 548 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 549 |
try:
|
| 550 |
nfl_slate_names_dk, nfl_slate_name_lookup_dk = define_dk_nfl_showdown_slates()
|
| 551 |
except:
|
|
@@ -1282,7 +1327,7 @@ with st.container():
|
|
| 1282 |
site_var = st.selectbox("Select Site", ['Draftkings', 'Fanduel'])
|
| 1283 |
|
| 1284 |
with col3:
|
| 1285 |
-
sport_var = st.selectbox("Select Sport", ['MLB', 'NBA', 'NHL', 'MMA', 'NASCAR', 'GOLF', 'NFL'], key='sport_var')
|
| 1286 |
|
| 1287 |
with col4:
|
| 1288 |
type_var = st.selectbox("Select Game Type", ['Classic', 'Showdown'])
|
|
@@ -1340,6 +1385,8 @@ with st.container():
|
|
| 1340 |
if site_var == 'Draftkings':
|
| 1341 |
if sport_var == 'NBA':
|
| 1342 |
slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
|
|
|
|
|
|
| 1343 |
elif sport_var == 'NFL':
|
| 1344 |
slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1345 |
elif sport_var == 'NHL':
|
|
@@ -1357,6 +1404,8 @@ with st.container():
|
|
| 1357 |
elif site_var == 'Fanduel':
|
| 1358 |
if sport_var == 'NBA':
|
| 1359 |
slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
|
|
|
|
|
|
| 1360 |
elif sport_var == 'NFL':
|
| 1361 |
slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1362 |
elif sport_var == 'NHL':
|
|
@@ -1383,6 +1432,9 @@ with st.container():
|
|
| 1383 |
elif sport_var == 'MLB':
|
| 1384 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 35000, value = 34000, step = 100, key = 'salary_min_var_fd')
|
| 1385 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 35000, value = 35000, step = 100, key = 'salary_max_var_fd')
|
|
|
|
|
|
|
|
|
|
| 1386 |
else:
|
| 1387 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
|
| 1388 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
|
|
@@ -1457,6 +1509,14 @@ with st.container():
|
|
| 1457 |
mlb_showdown_salaries = grab_mlb_showdown_salaries()
|
| 1458 |
except:
|
| 1459 |
mlb_showdown_salaries = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1460 |
|
| 1461 |
try:
|
| 1462 |
selected_tab = st.segmented_control(
|
|
@@ -1675,6 +1735,8 @@ if selected_tab == 'Data Load':
|
|
| 1675 |
if type_var != 'Showdown':
|
| 1676 |
if sport_var == 'NBA':
|
| 1677 |
portfolio_load = init_DK_NBA_lineups(type_var, slate_var3, prio_var, prio_mix, dk_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
|
|
|
|
|
|
| 1678 |
elif sport_var == 'NFL':
|
| 1679 |
portfolio_load = init_DK_NFL_lineups(type_var, slate_var3, prio_var, prio_mix, dk_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1680 |
elif sport_var == 'NHL':
|
|
@@ -1690,6 +1752,8 @@ if selected_tab == 'Data Load':
|
|
| 1690 |
else:
|
| 1691 |
if sport_var == 'NBA':
|
| 1692 |
portfolio_load = init_DK_NBA_lineups(type_var, nba_slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
|
|
|
|
|
|
| 1693 |
elif sport_var == 'NFL':
|
| 1694 |
portfolio_load = init_DK_NFL_lineups(type_var, nfl_slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1695 |
elif sport_var == 'NHL':
|
|
@@ -1714,6 +1778,8 @@ if selected_tab == 'Data Load':
|
|
| 1714 |
## Testing something here
|
| 1715 |
if sport_var == 'NBA':
|
| 1716 |
portfolio_load = init_FD_NBA_lineups(type_var, slate_var3, prio_var, prio_mix, fd_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
|
|
|
|
|
|
| 1717 |
elif sport_var == 'NFL':
|
| 1718 |
portfolio_load = init_FD_NFL_lineups(type_var, slate_var3, prio_var, prio_mix, fd_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1719 |
elif sport_var == 'NHL':
|
|
@@ -1729,6 +1795,8 @@ if selected_tab == 'Data Load':
|
|
| 1729 |
else:
|
| 1730 |
if sport_var == 'NBA':
|
| 1731 |
portfolio_load = init_FD_NBA_lineups(type_var, nba_slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
|
|
|
|
|
|
| 1732 |
elif sport_var == 'NFL':
|
| 1733 |
portfolio_load = init_FD_NFL_lineups(type_var, nfl_slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1734 |
elif sport_var == 'NHL':
|
|
@@ -2054,8 +2122,36 @@ if selected_tab == 'Data Load':
|
|
| 2054 |
st.session_state['locked_teams_list'] = None
|
| 2055 |
grid_map = None
|
| 2056 |
opp_map = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2057 |
st.session_state['db_projections_file'] = projections_file
|
| 2058 |
st.session_state['projections_loaded'] = True
|
|
|
|
| 2059 |
if 'projections_df' in st.session_state:
|
| 2060 |
del st.session_state['projections_df']
|
| 2061 |
|
|
|
|
| 546 |
slate_name_lookup = dict(zip(slate_names, unique_slates))
|
| 547 |
return slate_names, slate_name_lookup
|
| 548 |
|
| 549 |
+
def grab_wnba_reg_salaries(slate_var: str):
|
| 550 |
+
collection = salaries_db["WNBA_reg_player_info"]
|
| 551 |
+
eastern = pytz.timezone('US/Eastern')
|
| 552 |
+
today_str = datetime.now(eastern).strftime("%Y%m%d")
|
| 553 |
+
records = pd.DataFrame(list(collection.find({'Contest Date': {'$gte': today_str}})))
|
| 554 |
+
records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
|
| 555 |
+
records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
|
| 556 |
+
if slate_var == 'Main':
|
| 557 |
+
records = records.sort_values(by='ID', ascending=True)
|
| 558 |
+
records = records.drop_duplicates(subset=['Name'], keep='first')
|
| 559 |
+
elif slate_var == 'Secondary':
|
| 560 |
+
records = records.sort_values(by='ID', ascending=True)
|
| 561 |
+
# Keep middle occurrence: drop first and last, keep middle
|
| 562 |
+
grouped = records.groupby('Name')
|
| 563 |
+
middle_records = []
|
| 564 |
+
for name, group in grouped:
|
| 565 |
+
if len(group) == 1:
|
| 566 |
+
# Only one record, keep it
|
| 567 |
+
middle_records.append(group)
|
| 568 |
+
elif len(group) == 2:
|
| 569 |
+
# Two records, keep the second one (last)
|
| 570 |
+
middle_records.append(group.iloc[1:2])
|
| 571 |
+
else:
|
| 572 |
+
# Three or more records, keep the middle one(s)
|
| 573 |
+
# For odd number of records, keep the true middle
|
| 574 |
+
# For even number of records, keep the record at index len//2
|
| 575 |
+
middle_idx = len(group) // 2
|
| 576 |
+
middle_records.append(group.iloc[middle_idx:middle_idx+1])
|
| 577 |
+
records = pd.concat(middle_records, ignore_index=True)
|
| 578 |
+
elif slate_var == 'Auxiliary':
|
| 579 |
+
records = records.sort_values(by='ID', ascending=True)
|
| 580 |
+
records = records.drop_duplicates(subset=['Name'], keep='last')
|
| 581 |
+
return records
|
| 582 |
+
|
| 583 |
+
def grab_wnba_showdown_salaries():
|
| 584 |
+
collection = salaries_db["WNBA_showdown_player_info"]
|
| 585 |
+
# Get current time in Eastern Time (handles EST/EDT automatically)
|
| 586 |
+
eastern = pytz.timezone('US/Eastern')
|
| 587 |
+
today_str = datetime.now(eastern).strftime("%Y%m%d")
|
| 588 |
+
print(f"Current date in Eastern Time: {today_str}")
|
| 589 |
+
records = pd.DataFrame(list(collection.find({'Contest Date': {'$gte': today_str}})))
|
| 590 |
+
records = records[['Display Name', 'draftableId', 'Position', 'Salary']]
|
| 591 |
+
records = records.rename(columns={'Display Name': 'Name', 'draftableId': 'ID', 'Position': 'Roster Position'})
|
| 592 |
+
return records
|
| 593 |
+
|
| 594 |
try:
|
| 595 |
nfl_slate_names_dk, nfl_slate_name_lookup_dk = define_dk_nfl_showdown_slates()
|
| 596 |
except:
|
|
|
|
| 1327 |
site_var = st.selectbox("Select Site", ['Draftkings', 'Fanduel'])
|
| 1328 |
|
| 1329 |
with col3:
|
| 1330 |
+
sport_var = st.selectbox("Select Sport", ['MLB', 'NBA', 'NHL', 'MMA', 'NASCAR', 'GOLF', 'NFL', 'WNBA'], key='sport_var')
|
| 1331 |
|
| 1332 |
with col4:
|
| 1333 |
type_var = st.selectbox("Select Game Type", ['Classic', 'Showdown'])
|
|
|
|
| 1385 |
if site_var == 'Draftkings':
|
| 1386 |
if sport_var == 'NBA':
|
| 1387 |
slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1388 |
+
elif sport_var == 'WNBA':
|
| 1389 |
+
slate_var3 = st.radio("Which slate data are you loading?", (wnba_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1390 |
elif sport_var == 'NFL':
|
| 1391 |
slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_dk if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1392 |
elif sport_var == 'NHL':
|
|
|
|
| 1404 |
elif site_var == 'Fanduel':
|
| 1405 |
if sport_var == 'NBA':
|
| 1406 |
slate_var3 = st.radio("Which slate data are you loading?", (nba_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1407 |
+
elif sport_var == 'WNBA':
|
| 1408 |
+
slate_var3 = st.radio("Which slate data are you loading?", (wnba_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1409 |
elif sport_var == 'NFL':
|
| 1410 |
slate_var3 = st.radio("Which slate data are you loading?", (nfl_slate_names_fd if type_var == 'Showdown' else ['Main', 'Secondary', 'Auxiliary']), key='slate_var3_radio')
|
| 1411 |
elif sport_var == 'NHL':
|
|
|
|
| 1432 |
elif sport_var == 'MLB':
|
| 1433 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 35000, value = 34000, step = 100, key = 'salary_min_var_fd')
|
| 1434 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 35000, value = 35000, step = 100, key = 'salary_max_var_fd')
|
| 1435 |
+
elif sport_var == 'WNBA':
|
| 1436 |
+
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 40000, value = 39000, step = 100, key = 'salary_min_var_fd')
|
| 1437 |
+
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 40000, value = 40000, step = 100, key = 'salary_max_var_fd')
|
| 1438 |
else:
|
| 1439 |
salary_min_var = st.number_input("Minimum salary used", min_value = 0, max_value = 60000, value = 59000, step = 100, key = 'salary_min_var_fd')
|
| 1440 |
salary_max_var = st.number_input("Maximum salary used", min_value = 0, max_value = 60000, value = 60000, step = 100, key = 'salary_max_var_fd')
|
|
|
|
| 1509 |
mlb_showdown_salaries = grab_mlb_showdown_salaries()
|
| 1510 |
except:
|
| 1511 |
mlb_showdown_salaries = None
|
| 1512 |
+
try:
|
| 1513 |
+
wnba_reg_salaries = grab_wnba_reg_salaries(slate_var3)
|
| 1514 |
+
except:
|
| 1515 |
+
wnba_reg_salaries = None
|
| 1516 |
+
try:
|
| 1517 |
+
wnba_showdown_salaries = grab_wnba_showdown_salaries()
|
| 1518 |
+
except:
|
| 1519 |
+
wnba_showdown_salaries = None
|
| 1520 |
|
| 1521 |
try:
|
| 1522 |
selected_tab = st.segmented_control(
|
|
|
|
| 1735 |
if type_var != 'Showdown':
|
| 1736 |
if sport_var == 'NBA':
|
| 1737 |
portfolio_load = init_DK_NBA_lineups(type_var, slate_var3, prio_var, prio_mix, dk_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1738 |
+
elif sport_var == 'WNBA':
|
| 1739 |
+
portfolio_load = init_DK_WNBA_lineups(type_var, slate_var3, prio_var, prio_mix, dk_wnba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1740 |
elif sport_var == 'NFL':
|
| 1741 |
portfolio_load = init_DK_NFL_lineups(type_var, slate_var3, prio_var, prio_mix, dk_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1742 |
elif sport_var == 'NHL':
|
|
|
|
| 1752 |
else:
|
| 1753 |
if sport_var == 'NBA':
|
| 1754 |
portfolio_load = init_DK_NBA_lineups(type_var, nba_slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1755 |
+
elif sport_var == 'WNBA':
|
| 1756 |
+
portfolio_load = init_DK_WNBA_lineups(type_var, wnba_slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_wnba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1757 |
elif sport_var == 'NFL':
|
| 1758 |
portfolio_load = init_DK_NFL_lineups(type_var, nfl_slate_name_lookup_dk[slate_var3], prio_var, prio_mix, dk_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1759 |
elif sport_var == 'NHL':
|
|
|
|
| 1778 |
## Testing something here
|
| 1779 |
if sport_var == 'NBA':
|
| 1780 |
portfolio_load = init_FD_NBA_lineups(type_var, slate_var3, prio_var, prio_mix, fd_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1781 |
+
elif sport_var == 'WNBA':
|
| 1782 |
+
portfolio_load = init_FD_WNBA_lineups(type_var, slate_var3, prio_var, prio_mix, fd_wnba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1783 |
elif sport_var == 'NFL':
|
| 1784 |
portfolio_load = init_FD_NFL_lineups(type_var, slate_var3, prio_var, prio_mix, fd_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1785 |
elif sport_var == 'NHL':
|
|
|
|
| 1795 |
else:
|
| 1796 |
if sport_var == 'NBA':
|
| 1797 |
portfolio_load = init_FD_NBA_lineups(type_var, nba_slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_nba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1798 |
+
elif sport_var == 'WNBA':
|
| 1799 |
+
portfolio_load = init_FD_WNBA_lineups(type_var, wnba_slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_wnba_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1800 |
elif sport_var == 'NFL':
|
| 1801 |
portfolio_load = init_FD_NFL_lineups(type_var, nfl_slate_name_lookup_fd[slate_var3], prio_var, prio_mix, fd_nfl_showdown_db_translation, lineup_num_var, salary_min_var, salary_max_var, min_stacks_var, max_stacks_var, min_secondary_stacks_var, max_secondary_stacks_var, [])
|
| 1802 |
elif sport_var == 'NHL':
|
|
|
|
| 2122 |
st.session_state['locked_teams_list'] = None
|
| 2123 |
grid_map = None
|
| 2124 |
opp_map = None
|
| 2125 |
+
elif sport_var == 'WNBA':
|
| 2126 |
+
if site_var == 'Draftkings':
|
| 2127 |
+
if type_var == 'Classic':
|
| 2128 |
+
projections_file = init_wnba_baselines(type_var, site_var, slate_var3)[0]
|
| 2129 |
+
minutes_map = None
|
| 2130 |
+
st.session_state['locked_teams_list'] = None
|
| 2131 |
+
grid_map = None
|
| 2132 |
+
opp_map = None
|
| 2133 |
+
elif type_var == 'Showdown':
|
| 2134 |
+
projections_file = init_wnba_baselines(type_var, site_var, slate_var3)[2]
|
| 2135 |
+
minutes_map = None
|
| 2136 |
+
st.session_state['locked_teams_list'] = None
|
| 2137 |
+
grid_map = None
|
| 2138 |
+
opp_map = None
|
| 2139 |
+
elif site_var == 'Fanduel':
|
| 2140 |
+
if type_var == 'Classic':
|
| 2141 |
+
projections_file = init_wnba_baselines(type_var, site_var, slate_var3)[1]
|
| 2142 |
+
minutes_map = None
|
| 2143 |
+
st.session_state['locked_teams_list'] = None
|
| 2144 |
+
grid_map = None
|
| 2145 |
+
opp_map = None
|
| 2146 |
+
elif type_var == 'Showdown':
|
| 2147 |
+
projections_file = init_wnba_baselines(type_var, site_var, slate_var3)[3]
|
| 2148 |
+
minutes_map = None
|
| 2149 |
+
st.session_state['locked_teams_list'] = None
|
| 2150 |
+
grid_map = None
|
| 2151 |
+
opp_map = None
|
| 2152 |
st.session_state['db_projections_file'] = projections_file
|
| 2153 |
st.session_state['projections_loaded'] = True
|
| 2154 |
+
|
| 2155 |
if 'projections_df' in st.session_state:
|
| 2156 |
del st.session_state['projections_df']
|
| 2157 |
|
database.py
CHANGED
|
@@ -12,12 +12,13 @@ def init_conn():
|
|
| 12 |
salaries_db = client['Contest_Information']
|
| 13 |
nfl_db = client["NFL_Database"]
|
| 14 |
nba_db = client["NBA_Database"]
|
|
|
|
| 15 |
mlb_db = client["MLB_Database"]
|
| 16 |
nhl_db = client["NHL_Database"]
|
| 17 |
mma_db = client["MMA_Database"]
|
| 18 |
pga_db = client["PGA_Database"]
|
| 19 |
nascar_db = client['NASCAR_Database']
|
| 20 |
|
| 21 |
-
return nfl_db, salaries_db, nba_db, mlb_db, nhl_db, mma_db, pga_db, nascar_db
|
| 22 |
|
| 23 |
-
nfl_db, salaries_db, nba_db, mlb_db, nhl_db, mma_db, pga_db, nascar_db = init_conn()
|
|
|
|
| 12 |
salaries_db = client['Contest_Information']
|
| 13 |
nfl_db = client["NFL_Database"]
|
| 14 |
nba_db = client["NBA_Database"]
|
| 15 |
+
wnba_db = client["WNBA_DFS"]
|
| 16 |
mlb_db = client["MLB_Database"]
|
| 17 |
nhl_db = client["NHL_Database"]
|
| 18 |
mma_db = client["MMA_Database"]
|
| 19 |
pga_db = client["PGA_Database"]
|
| 20 |
nascar_db = client['NASCAR_Database']
|
| 21 |
|
| 22 |
+
return nfl_db, salaries_db, nba_db, wnba_db, mlb_db, nhl_db, mma_db, pga_db, nascar_db
|
| 23 |
|
| 24 |
+
nfl_db, salaries_db, nba_db, wnba_db, mlb_db, nhl_db, mma_db, pga_db, nascar_db = init_conn()
|
database_queries.py
CHANGED
|
@@ -2952,6 +2952,526 @@ def init_FD_PGA_lineups(type_var, slate_var, prio_var, prio_mix, lineup_num, sal
|
|
| 2952 |
|
| 2953 |
return FD_seed
|
| 2954 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2955 |
def init_nascar_baselines(type_var: str, site_var: str, slate_var: str):
|
| 2956 |
|
| 2957 |
if slate_var == 'Main':
|
|
|
|
| 2952 |
|
| 2953 |
return FD_seed
|
| 2954 |
|
| 2955 |
+
def init_wnba_baselines(type_var: str, site_var: str, slate_var: str):
|
| 2956 |
+
|
| 2957 |
+
if slate_var == 'Main':
|
| 2958 |
+
slate_var = 'Main Slate'
|
| 2959 |
+
elif slate_var == 'Secondary':
|
| 2960 |
+
slate_var = 'Secondary Slate'
|
| 2961 |
+
elif slate_var == 'Auxiliary':
|
| 2962 |
+
slate_var = 'Late Slate'
|
| 2963 |
+
|
| 2964 |
+
if type_var == 'Showdown':
|
| 2965 |
+
collection = wnba_db["Player_SD_Range_Of_Outcomes"]
|
| 2966 |
+
cursor = collection.find()
|
| 2967 |
+
|
| 2968 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 2969 |
+
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Minutes Proj', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']]
|
| 2970 |
+
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float)
|
| 2971 |
+
raw_display = raw_display.rename(columns={"player_id": "player_ID"})
|
| 2972 |
+
raw_display = raw_display.loc[raw_display['Median'] > 0]
|
| 2973 |
+
raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
|
| 2974 |
+
sd_raw = raw_display.sort_values(by='Median', ascending=False)
|
| 2975 |
+
dk_sd_roo_raw = sd_raw[sd_raw['site'] == 'Draftkings']
|
| 2976 |
+
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_ID']))
|
| 2977 |
+
fd_sd_roo_raw = sd_raw[sd_raw['site'] == 'Fanduel']
|
| 2978 |
+
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_ID']))
|
| 2979 |
+
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].astype(str)
|
| 2980 |
+
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].str.rsplit('-', n=1).str[0].astype(str)
|
| 2981 |
+
|
| 2982 |
+
minutes_map = dict(zip(sd_raw['Player'], sd_raw['Minutes Proj']))
|
| 2983 |
+
locked_teams_list = None
|
| 2984 |
+
|
| 2985 |
+
dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site', 'Minutes Proj'])
|
| 2986 |
+
fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site', 'Minutes Proj'])
|
| 2987 |
+
|
| 2988 |
+
dk_sd_roo_raw = dk_sd_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
|
| 2989 |
+
fd_sd_roo_raw = fd_sd_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
|
| 2990 |
+
|
| 2991 |
+
dk_roo_raw = None
|
| 2992 |
+
fd_roo_raw = None
|
| 2993 |
+
dk_id_map = None
|
| 2994 |
+
fd_id_map = None
|
| 2995 |
+
|
| 2996 |
+
else:
|
| 2997 |
+
collection = wnba_db["Player_Range_Of_Outcomes"]
|
| 2998 |
+
cursor = collection.find()
|
| 2999 |
+
|
| 3000 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3001 |
+
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Minutes Proj', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']]
|
| 3002 |
+
raw_display = raw_display.rename(columns={"player_id": "player_ID"})
|
| 3003 |
+
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float)
|
| 3004 |
+
raw_display = raw_display.loc[raw_display['Median'] > 0]
|
| 3005 |
+
raw_display = raw_display[raw_display['slate'] == slate_var]
|
| 3006 |
+
dk_roo_raw = raw_display[raw_display['site'] == 'Draftkings']
|
| 3007 |
+
fd_roo_raw = raw_display[raw_display['site'] == 'Fanduel']
|
| 3008 |
+
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_ID']))
|
| 3009 |
+
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_ID']))
|
| 3010 |
+
raw_display = raw_display.apply(pd.to_numeric, errors='ignore')
|
| 3011 |
+
|
| 3012 |
+
minutes_map = dict(zip(raw_display['Player'], raw_display['Minutes Proj']))
|
| 3013 |
+
|
| 3014 |
+
dk_roo_raw = dk_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site', 'Minutes Proj'])
|
| 3015 |
+
fd_roo_raw = fd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site', 'Minutes Proj'])
|
| 3016 |
+
|
| 3017 |
+
dk_roo_raw = dk_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
|
| 3018 |
+
fd_roo_raw = fd_roo_raw.rename(columns={'Player': 'player_names', 'Position': 'position', 'Team': 'team', 'Salary': 'salary', 'Median': 'median', 'Own': 'ownership', 'CPT_Own': 'captain ownership'})
|
| 3019 |
+
|
| 3020 |
+
collection = wnba_db["Live_Projections"]
|
| 3021 |
+
cursor = collection.find()
|
| 3022 |
+
|
| 3023 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3024 |
+
locked_teams_frame = raw_display[raw_display['Locked'] == 1]
|
| 3025 |
+
live_dict = dict(zip(raw_display['Player'], raw_display['Live_Proj']))
|
| 3026 |
+
live_median_dict = dict(zip(raw_display['Player'], raw_display['Median']))
|
| 3027 |
+
locked_teams_dict = dict(zip(locked_teams_frame['Team'], locked_teams_frame['Locked']))
|
| 3028 |
+
locked_teams_list = list(locked_teams_dict.keys())
|
| 3029 |
+
|
| 3030 |
+
dk_roo_raw['median'] = dk_roo_raw['player_names'].map(live_dict)
|
| 3031 |
+
fd_roo_raw['median'] = fd_roo_raw['player_names'].map(live_dict)
|
| 3032 |
+
|
| 3033 |
+
dk_roo_raw['median'] = np.where(dk_roo_raw['median'] == 0, dk_roo_raw['player_names'].map(live_median_dict), dk_roo_raw['median'])
|
| 3034 |
+
fd_roo_raw['median'] = np.where(fd_roo_raw['median'] == 0, fd_roo_raw['player_names'].map(live_median_dict), fd_roo_raw['median'])
|
| 3035 |
+
|
| 3036 |
+
dk_sd_roo_raw = None
|
| 3037 |
+
fd_sd_roo_raw = None
|
| 3038 |
+
dk_sd_id_map = None
|
| 3039 |
+
fd_sd_id_map = None
|
| 3040 |
+
|
| 3041 |
+
return 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, minutes_map, locked_teams_list
|
| 3042 |
+
|
| 3043 |
+
def init_DK_WNBA_lineups(type_var, slate_var, prio_var, prio_mix, wnba_db_translation, lineup_num, salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max, player_var2):
|
| 3044 |
+
|
| 3045 |
+
if prio_var == 'Mix':
|
| 3046 |
+
prio_var = None
|
| 3047 |
+
|
| 3048 |
+
if type_var == 'Classic':
|
| 3049 |
+
if slate_var == 'Main':
|
| 3050 |
+
collection = wnba_db['DK_WNBA_name_map']
|
| 3051 |
+
cursor = collection.find()
|
| 3052 |
+
raw_data = pd.DataFrame(list(cursor))
|
| 3053 |
+
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
| 3054 |
+
|
| 3055 |
+
collection = wnba_db['DK_WNBA_seed_frame']
|
| 3056 |
+
if prio_var == None:
|
| 3057 |
+
if player_var2 != []:
|
| 3058 |
+
player_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
| 3059 |
+
query_conditions = []
|
| 3060 |
+
|
| 3061 |
+
for player in player_var2:
|
| 3062 |
+
# Create a condition for each player to check if they appear in any column
|
| 3063 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3064 |
+
query_conditions.append(player_condition)
|
| 3065 |
+
|
| 3066 |
+
# Combine all player conditions with $or
|
| 3067 |
+
if query_conditions:
|
| 3068 |
+
filter_query = {'$or': query_conditions}
|
| 3069 |
+
cursor1 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3070 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3071 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3072 |
+
}]}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3073 |
+
cursor2 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3074 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3075 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3076 |
+
}]}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3077 |
+
else:
|
| 3078 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3079 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3080 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3081 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3082 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3083 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3084 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3085 |
+
else:
|
| 3086 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3087 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3088 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3089 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3090 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3091 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3092 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3093 |
+
else:
|
| 3094 |
+
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3095 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3096 |
+
}).sort(prio_var, -1).limit(lineup_num)
|
| 3097 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3098 |
+
|
| 3099 |
+
raw_display = raw_display.drop_duplicates(subset=['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'])
|
| 3100 |
+
raw_display = raw_display.head(lineup_num)
|
| 3101 |
+
|
| 3102 |
+
raw_display = raw_display[['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']]
|
| 3103 |
+
dict_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
| 3104 |
+
# Map names
|
| 3105 |
+
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 3106 |
+
elif slate_var == 'Secondary':
|
| 3107 |
+
collection = wnba_db['DK_WNBA_Secondary_name_map']
|
| 3108 |
+
cursor = collection.find()
|
| 3109 |
+
raw_data = pd.DataFrame(list(cursor))
|
| 3110 |
+
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
| 3111 |
+
|
| 3112 |
+
collection = wnba_db['DK_WNBA_Secondary_seed_frame']
|
| 3113 |
+
if prio_var == None:
|
| 3114 |
+
if player_var2 != []:
|
| 3115 |
+
player_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
| 3116 |
+
query_conditions = []
|
| 3117 |
+
|
| 3118 |
+
for player in player_var2:
|
| 3119 |
+
# Create a condition for each player to check if they appear in any column
|
| 3120 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3121 |
+
query_conditions.append(player_condition)
|
| 3122 |
+
|
| 3123 |
+
# Combine all player conditions with $or
|
| 3124 |
+
if query_conditions:
|
| 3125 |
+
filter_query = {'$or': query_conditions}
|
| 3126 |
+
cursor1 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3127 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3128 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3129 |
+
}]}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3130 |
+
cursor2 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3131 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3132 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3133 |
+
}]}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3134 |
+
else:
|
| 3135 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3136 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3137 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3138 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3139 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3140 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3141 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3142 |
+
else:
|
| 3143 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3144 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3145 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3146 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3147 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3148 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3149 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3150 |
+
else:
|
| 3151 |
+
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3152 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3153 |
+
}).sort(prio_var, -1).limit(lineup_num)
|
| 3154 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3155 |
+
|
| 3156 |
+
raw_display = raw_display.drop_duplicates(subset=['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'])
|
| 3157 |
+
raw_display = raw_display.head(lineup_num)
|
| 3158 |
+
|
| 3159 |
+
raw_display = raw_display[['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']]
|
| 3160 |
+
dict_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
| 3161 |
+
# Map names
|
| 3162 |
+
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 3163 |
+
elif slate_var == 'Auxiliary':
|
| 3164 |
+
collection = wnba_db['DK_WNBA_Late_name_map']
|
| 3165 |
+
cursor = collection.find()
|
| 3166 |
+
raw_data = pd.DataFrame(list(cursor))
|
| 3167 |
+
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
| 3168 |
+
|
| 3169 |
+
collection = wnba_db['DK_WNBA_Late_seed_frame']
|
| 3170 |
+
if prio_var == None:
|
| 3171 |
+
if player_var2 != []:
|
| 3172 |
+
player_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
| 3173 |
+
query_conditions = []
|
| 3174 |
+
|
| 3175 |
+
for player in player_var2:
|
| 3176 |
+
# Create a condition for each player to check if they appear in any column
|
| 3177 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3178 |
+
query_conditions.append(player_condition)
|
| 3179 |
+
|
| 3180 |
+
# Combine all player conditions with $or
|
| 3181 |
+
if query_conditions:
|
| 3182 |
+
filter_query = {'$or': query_conditions}
|
| 3183 |
+
cursor1 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3184 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3185 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3186 |
+
}]}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3187 |
+
cursor2 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3188 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3189 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3190 |
+
}]}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3191 |
+
else:
|
| 3192 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3193 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3194 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3195 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3196 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3197 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3198 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3199 |
+
else:
|
| 3200 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3201 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3202 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3203 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3204 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3205 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3206 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3207 |
+
else:
|
| 3208 |
+
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3209 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3210 |
+
}).sort(prio_var, -1).limit(lineup_num)
|
| 3211 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3212 |
+
|
| 3213 |
+
raw_display = raw_display.drop_duplicates(subset=['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL'])
|
| 3214 |
+
raw_display = raw_display.head(lineup_num)
|
| 3215 |
+
|
| 3216 |
+
raw_display = raw_display[['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']]
|
| 3217 |
+
dict_columns = ['G1', 'G2', 'F1', 'F2', 'F3', 'UTIL']
|
| 3218 |
+
# Map names
|
| 3219 |
+
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 3220 |
+
elif type_var == 'Showdown':
|
| 3221 |
+
collection = wnba_db[wnba_db_translation[slate_var]]
|
| 3222 |
+
if prio_var == None:
|
| 3223 |
+
if player_var2 != []:
|
| 3224 |
+
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 3225 |
+
query_conditions = []
|
| 3226 |
+
|
| 3227 |
+
for player in player_var2:
|
| 3228 |
+
# Create a condition for each player to check if they appear in any column
|
| 3229 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3230 |
+
query_conditions.append(player_condition)
|
| 3231 |
+
|
| 3232 |
+
# Combine all player conditions with $or
|
| 3233 |
+
if query_conditions:
|
| 3234 |
+
filter_query = {'$or': query_conditions}
|
| 3235 |
+
cursor1 = collection.find(_showdown_seed_filter_with_players(filter_query, salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3236 |
+
cursor2 = collection.find(_showdown_seed_filter_with_players(filter_query, salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3237 |
+
else:
|
| 3238 |
+
cursor1 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3239 |
+
cursor2 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3240 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3241 |
+
else:
|
| 3242 |
+
cursor1 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3243 |
+
cursor2 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3244 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3245 |
+
else:
|
| 3246 |
+
cursor = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort(prio_var, -1).limit(lineup_num)
|
| 3247 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3248 |
+
|
| 3249 |
+
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'])
|
| 3250 |
+
raw_display = raw_display.head(lineup_num)
|
| 3251 |
+
|
| 3252 |
+
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']]
|
| 3253 |
+
|
| 3254 |
+
DK_seed = raw_display.to_numpy()
|
| 3255 |
+
|
| 3256 |
+
return DK_seed
|
| 3257 |
+
|
| 3258 |
+
def init_FD_WNBA_lineups(type_var, slate_var, prio_var, prio_mix, wnba_db_translation, lineup_num, salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max, player_var2):
|
| 3259 |
+
|
| 3260 |
+
if prio_var == 'Mix':
|
| 3261 |
+
prio_var = None
|
| 3262 |
+
|
| 3263 |
+
if type_var == 'Classic':
|
| 3264 |
+
if slate_var == 'Main':
|
| 3265 |
+
collection = wnba_db['FD_WNBA_name_map']
|
| 3266 |
+
cursor = collection.find()
|
| 3267 |
+
raw_data = pd.DataFrame(list(cursor))
|
| 3268 |
+
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
| 3269 |
+
|
| 3270 |
+
|
| 3271 |
+
collection = wnba_db['FD_WNBA_seed_frame']
|
| 3272 |
+
if prio_var == None:
|
| 3273 |
+
if player_var2 != []:
|
| 3274 |
+
player_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
| 3275 |
+
query_conditions = []
|
| 3276 |
+
|
| 3277 |
+
for player in player_var2:
|
| 3278 |
+
# Create a condition for each player to check if they appear in any column
|
| 3279 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3280 |
+
query_conditions.append(player_condition)
|
| 3281 |
+
|
| 3282 |
+
# Combine all player conditions with $or
|
| 3283 |
+
if query_conditions:
|
| 3284 |
+
filter_query = {'$or': query_conditions}
|
| 3285 |
+
cursor1 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3286 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3287 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3288 |
+
}]}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3289 |
+
cursor2 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3290 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3291 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3292 |
+
}]}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3293 |
+
else:
|
| 3294 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3295 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3296 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3297 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3298 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3299 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3300 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3301 |
+
else:
|
| 3302 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3303 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3304 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3305 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3306 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3307 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3308 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3309 |
+
else:
|
| 3310 |
+
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3311 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3312 |
+
}).sort(prio_var, -1).limit(lineup_num)
|
| 3313 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3314 |
+
|
| 3315 |
+
raw_display = raw_display.drop_duplicates(subset=['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4'])
|
| 3316 |
+
raw_display = raw_display.head(lineup_num)
|
| 3317 |
+
|
| 3318 |
+
raw_display = raw_display[['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']]
|
| 3319 |
+
dict_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
| 3320 |
+
# Map names
|
| 3321 |
+
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 3322 |
+
elif slate_var == 'Secondary':
|
| 3323 |
+
collection = wnba_db['FD_WNBA_Secondary_name_map']
|
| 3324 |
+
cursor = collection.find()
|
| 3325 |
+
raw_data = pd.DataFrame(list(cursor))
|
| 3326 |
+
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
| 3327 |
+
|
| 3328 |
+
collection = wnba_db['FD_WNBA_Secondary_seed_frame']
|
| 3329 |
+
if prio_var == None:
|
| 3330 |
+
if player_var2 != []:
|
| 3331 |
+
player_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
| 3332 |
+
query_conditions = []
|
| 3333 |
+
|
| 3334 |
+
for player in player_var2:
|
| 3335 |
+
# Create a condition for each player to check if they appear in any column
|
| 3336 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3337 |
+
query_conditions.append(player_condition)
|
| 3338 |
+
|
| 3339 |
+
# Combine all player conditions with $or
|
| 3340 |
+
if query_conditions:
|
| 3341 |
+
filter_query = {'$or': query_conditions}
|
| 3342 |
+
cursor1 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3343 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3344 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3345 |
+
}]}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3346 |
+
cursor2 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3347 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3348 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3349 |
+
}]}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3350 |
+
else:
|
| 3351 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3352 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3353 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3354 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3355 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3356 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3357 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3358 |
+
else:
|
| 3359 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3360 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3361 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3362 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3363 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3364 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3365 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3366 |
+
else:
|
| 3367 |
+
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3368 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3369 |
+
}).sort(prio_var, -1).limit(lineup_num)
|
| 3370 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3371 |
+
|
| 3372 |
+
raw_display = raw_display.drop_duplicates(subset=['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4'])
|
| 3373 |
+
raw_display = raw_display.head(lineup_num)
|
| 3374 |
+
|
| 3375 |
+
raw_display = raw_display[['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']]
|
| 3376 |
+
dict_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
| 3377 |
+
# Map names
|
| 3378 |
+
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 3379 |
+
elif slate_var == 'Auxiliary':
|
| 3380 |
+
collection = wnba_db['FD_WNBA_Late_name_map']
|
| 3381 |
+
cursor = collection.find()
|
| 3382 |
+
raw_data = pd.DataFrame(list(cursor))
|
| 3383 |
+
names_dict = dict(zip(raw_data['key'], raw_data['value']))
|
| 3384 |
+
|
| 3385 |
+
collection = wnba_db['FD_WNBA_Late_seed_frame']
|
| 3386 |
+
if prio_var == None:
|
| 3387 |
+
if player_var2 != []:
|
| 3388 |
+
player_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
| 3389 |
+
query_conditions = []
|
| 3390 |
+
|
| 3391 |
+
for player in player_var2:
|
| 3392 |
+
# Create a condition for each player to check if they appear in any column
|
| 3393 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3394 |
+
query_conditions.append(player_condition)
|
| 3395 |
+
|
| 3396 |
+
# Combine all player conditions with $or
|
| 3397 |
+
if query_conditions:
|
| 3398 |
+
filter_query = {'$or': query_conditions}
|
| 3399 |
+
cursor1 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3400 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3401 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3402 |
+
}]}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3403 |
+
cursor2 = collection.find({'$and': [filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max},
|
| 3404 |
+
'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3405 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3406 |
+
}]}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3407 |
+
else:
|
| 3408 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3409 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3410 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3411 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3412 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3413 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3414 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3415 |
+
else:
|
| 3416 |
+
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3417 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3418 |
+
}).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3419 |
+
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3420 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3421 |
+
}).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3422 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3423 |
+
else:
|
| 3424 |
+
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}, 'Team_count': {'$gte': team_count_min if team_count_min is not None else 1, '$lte': team_count_max if team_count_max is not None else 999},
|
| 3425 |
+
'Secondary_count': {'$gte': secondary_team_count_min if secondary_team_count_min is not None else 1, '$lte': secondary_team_count_max if secondary_team_count_max is not None else 999},
|
| 3426 |
+
}).sort(prio_var, -1).limit(lineup_num)
|
| 3427 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3428 |
+
|
| 3429 |
+
raw_display = raw_display.drop_duplicates(subset=['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4'])
|
| 3430 |
+
raw_display = raw_display.head(lineup_num)
|
| 3431 |
+
|
| 3432 |
+
raw_display = raw_display[['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']]
|
| 3433 |
+
dict_columns = ['G1', 'G2', 'G3', 'F1', 'F2', 'F3', 'F4']
|
| 3434 |
+
# Map names
|
| 3435 |
+
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict))
|
| 3436 |
+
|
| 3437 |
+
elif type_var == 'Showdown':
|
| 3438 |
+
collection = wnba_db[wnba_db_translation[slate_var]]
|
| 3439 |
+
if prio_var == None:
|
| 3440 |
+
if player_var2 != []:
|
| 3441 |
+
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']
|
| 3442 |
+
query_conditions = []
|
| 3443 |
+
|
| 3444 |
+
for player in player_var2:
|
| 3445 |
+
# Create a condition for each player to check if they appear in any column
|
| 3446 |
+
player_condition = {'$or': [{col: player} for col in player_columns]}
|
| 3447 |
+
query_conditions.append(player_condition)
|
| 3448 |
+
|
| 3449 |
+
# Combine all player conditions with $or
|
| 3450 |
+
if query_conditions:
|
| 3451 |
+
filter_query = {'$or': query_conditions}
|
| 3452 |
+
cursor1 = collection.find(_showdown_seed_filter_with_players(filter_query, salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3453 |
+
cursor2 = collection.find(_showdown_seed_filter_with_players(filter_query, salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3454 |
+
else:
|
| 3455 |
+
cursor1 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3456 |
+
cursor2 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3457 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3458 |
+
else:
|
| 3459 |
+
cursor1 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('proj', -1).limit(_mix_seed_limit_primary(lineup_num, prio_mix))
|
| 3460 |
+
cursor2 = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort('Own', -1).limit(_mix_seed_limit_secondary(lineup_num, prio_mix))
|
| 3461 |
+
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))])
|
| 3462 |
+
else:
|
| 3463 |
+
cursor = collection.find(_showdown_seed_filter(salary_min, salary_max, team_count_min, team_count_max, secondary_team_count_min, secondary_team_count_max)).sort(prio_var, -1).limit(lineup_num)
|
| 3464 |
+
raw_display = pd.DataFrame(list(cursor))
|
| 3465 |
+
|
| 3466 |
+
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'])
|
| 3467 |
+
raw_display = raw_display.head(lineup_num)
|
| 3468 |
+
|
| 3469 |
+
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']]
|
| 3470 |
+
|
| 3471 |
+
FD_seed = raw_display.to_numpy()
|
| 3472 |
+
|
| 3473 |
+
return FD_seed
|
| 3474 |
+
|
| 3475 |
def init_nascar_baselines(type_var: str, site_var: str, slate_var: str):
|
| 3476 |
|
| 3477 |
if slate_var == 'Main':
|