|
|
import pandas as pd |
|
|
import numpy as np |
|
|
import math |
|
|
from database import * |
|
|
from datetime import datetime |
|
|
|
|
|
|
|
|
wrong_nfl_team_names = ['Denver Broncos', 'Washington Commanders', 'Cincinnati Bengals', 'Arizona Cardinals', 'Los Angeles Rams', 'Pittsburgh Steelers', |
|
|
'Jacksonville Jaguars', 'New England Patriots', 'Tampa Bay Buccaneers', 'San Francisco 49ers', 'Green Bay Packers', 'New York Jets', |
|
|
'Indianapolis Colts', 'Miami Dolphins', 'Detroit Lions', 'Las Vegas Raiders', 'Atlanta Falcons', 'Seattle Seahawks', 'Houston Texans', |
|
|
'New Orleans Saints', 'Carolina Panthers', 'New York Giants', 'Cleveland Browns', 'Tennessee Titans', 'Philadelphia Eagles', 'Dallas Cowboys', |
|
|
'Kansas City Chiefs', 'Los Angeles Chargers', 'Baltimore Ravens', 'Buffalo Bills', 'Minnesota Vikings', 'Chicago Bears'] |
|
|
right_nfl_name_teams = ['Broncos', 'Commanders', 'Bengals', 'Cardinals', 'Rams', 'Steelers', 'Jaguars', 'Patriots', 'Buccaneers', '49ers', 'Packers', |
|
|
'Jets', 'Colts', 'Dolphins', 'Lions', 'Raiders', 'Falcons', 'Seahawks', 'Texans', 'Saints', 'Panthers', 'Giants', 'Browns', 'Titans', 'Eagles', 'Cowboys', |
|
|
'Chiefs', 'Chargers', 'Ravens', 'Bills', 'Vikings', 'Bears'] |
|
|
|
|
|
def init_nfl_baselines(type_var: str, site_var: str, slate_var: str): |
|
|
|
|
|
if slate_var == 'Main': |
|
|
slate_var = 'Main Slate' |
|
|
elif slate_var == 'Secondary': |
|
|
slate_var = 'Secondary Slate' |
|
|
elif slate_var == 'Auxiliary': |
|
|
slate_var = 'Late Slate' |
|
|
|
|
|
if type_var == 'Classic': |
|
|
collection = nfl_db["DK_NFL_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display.rename(columns={'player_ID': 'player_id'}) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own','player_id', 'slate', 'version']] |
|
|
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_display['Player']) |
|
|
load_display = raw_display[raw_display['Position'] != 'K'] |
|
|
dk_roo_raw = load_display.dropna(subset=['Median']) |
|
|
dk_roo_raw = dk_roo_raw[dk_roo_raw['version'] == 'overall'] |
|
|
dk_roo_raw = dk_roo_raw[dk_roo_raw['slate'] == slate_var] |
|
|
|
|
|
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_id'])) |
|
|
|
|
|
collection = nfl_db["FD_NFL_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display.rename(columns={'player_ID': 'player_id'}) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own','player_id', 'slate', 'version']] |
|
|
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_display['Player']) |
|
|
load_display = raw_display[raw_display['Position'] != 'K'] |
|
|
fd_roo_raw = load_display.dropna(subset=['Median']) |
|
|
fd_roo_raw = fd_roo_raw[fd_roo_raw['version'] == 'overall'] |
|
|
fd_roo_raw = fd_roo_raw[fd_roo_raw['slate'] == slate_var] |
|
|
|
|
|
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_id'])) |
|
|
|
|
|
dk_roo_raw = dk_roo_raw.drop(columns=['player_id', 'slate', 'version']) |
|
|
fd_roo_raw = fd_roo_raw.drop(columns=['player_id', 'slate', 'version']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_sd_roo_raw = None |
|
|
fd_sd_roo_raw = None |
|
|
dk_sd_id_map = None |
|
|
fd_sd_id_map = None |
|
|
elif type_var == 'Showdown': |
|
|
collection = nfl_db["DK_SD_NFL_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display.rename(columns={'player_ID': 'player_id'}) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate']] |
|
|
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_display['Player']) |
|
|
|
|
|
dk_sd_roo_raw = raw_display.dropna(subset=['Median']) |
|
|
dk_sd_roo_raw['Salary'] = dk_sd_roo_raw['Salary'] / 1.5 |
|
|
|
|
|
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_id'])) |
|
|
|
|
|
collection = nfl_db["FD_SD_NFL_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display.rename(columns={'player_ID': 'player_id'}) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate']] |
|
|
raw_display['Player'] = raw_display['Player'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_display['Player']) |
|
|
|
|
|
fd_sd_roo_raw = raw_display.dropna(subset=['Median']) |
|
|
fd_sd_roo_raw['Salary'] = fd_sd_roo_raw['Salary'] / 1.5 |
|
|
|
|
|
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_id'])) |
|
|
|
|
|
dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_id', 'slate']) |
|
|
fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_id', 'slate']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_roo_raw = None |
|
|
fd_roo_raw = None |
|
|
dk_id_map = None |
|
|
fd_id_map = None |
|
|
|
|
|
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 |
|
|
|
|
|
def init_DK_NFL_lineups(type_var, slate_var, prio_var, prio_mix, nfl_db_translation, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = nfl_db['DK_NFL_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
raw_data['value'] = raw_data['value'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_data['value']) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nfl_db['DK_NFL_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']) |
|
|
|
|
|
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']] |
|
|
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = nfl_db['DK_NFL_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
raw_data['value'] = raw_data['value'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_data['value']) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nfl_db['DK_NFL_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']) |
|
|
|
|
|
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']] |
|
|
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = nfl_db['DK_NFL_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
raw_data['value'] = raw_data['value'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_data['value']) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nfl_db['DK_NFL_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']) |
|
|
|
|
|
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']] |
|
|
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif type_var == 'Showdown': |
|
|
collection = nfl_db[nfl_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']: |
|
|
raw_display[column] = raw_display[column].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_display[column]) |
|
|
|
|
|
DK_seed = raw_display.to_numpy() |
|
|
|
|
|
return DK_seed |
|
|
|
|
|
def init_FD_NFL_lineups(type_var, slate_var, prio_var, prio_mix, nfl_db_translation, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = nfl_db['FD_NFL_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
raw_data['value'] = raw_data['value'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_data['value']) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
|
|
|
collection = nfl_db['FD_NFL_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']) |
|
|
|
|
|
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']] |
|
|
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = nfl_db['FD_NFL_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
raw_data['value'] = raw_data['value'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_data['value']) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nfl_db['FD_NFL_Secondary_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']) |
|
|
|
|
|
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']] |
|
|
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = nfl_db['FD_NFL_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
raw_data['value'] = raw_data['value'].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_data['value']) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nfl_db['FD_NFL_Late_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num = ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']) |
|
|
|
|
|
raw_display = raw_display[['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST']] |
|
|
dict_columns = ['QB', 'RB1', 'RB2', 'WR1', 'WR2', 'WR3', 'TE', 'FLEX', 'DST'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
|
|
|
elif type_var == 'Showdown': |
|
|
collection = nfl_db[nfl_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
for column in ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']: |
|
|
raw_display[column] = raw_display[column].map(dict(zip(wrong_nfl_team_names, right_nfl_name_teams)), na_action='ignore').fillna(raw_display[column]) |
|
|
|
|
|
FD_seed = raw_display.to_numpy() |
|
|
|
|
|
return FD_seed |
|
|
|
|
|
def init_nba_baselines(type_var: str, site_var: str, slate_var: str): |
|
|
|
|
|
if slate_var == 'Main': |
|
|
slate_var = 'Main Slate' |
|
|
elif slate_var == 'Secondary': |
|
|
slate_var = 'Secondary Slate' |
|
|
elif slate_var == 'Auxiliary': |
|
|
slate_var = 'Late Slate' |
|
|
|
|
|
if type_var == 'Showdown': |
|
|
collection = nba_db["Player_SD_Range_Of_Outcomes"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']] |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
sd_raw = raw_display.sort_values(by='Median', ascending=False) |
|
|
dk_sd_roo_raw = sd_raw[sd_raw['site'] == 'Draftkings'] |
|
|
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw = sd_raw[sd_raw['site'] == 'Fanduel'] |
|
|
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].astype(str) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].str.rsplit('-', n=1).str[0].astype(str) |
|
|
|
|
|
dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_roo_raw = None |
|
|
fd_roo_raw = None |
|
|
dk_id_map = None |
|
|
fd_id_map = None |
|
|
|
|
|
else: |
|
|
collection = nba_db["Player_Range_Of_Outcomes"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']] |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
dk_roo_raw = raw_display[raw_display['site'] == 'Draftkings'] |
|
|
fd_roo_raw = raw_display[raw_display['site'] == 'Fanduel'] |
|
|
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_ID'])) |
|
|
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_ID'])) |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
|
|
|
dk_roo_raw = dk_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
fd_roo_raw = fd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_sd_roo_raw = None |
|
|
fd_sd_roo_raw = None |
|
|
dk_sd_id_map = None |
|
|
fd_sd_id_map = None |
|
|
|
|
|
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 |
|
|
|
|
|
def init_DK_NBA_lineups(type_var, slate_var, prio_var, prio_mix, nba_db_translation, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = nba_db['DK_NBA_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nba_db['DK_NBA_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']) |
|
|
|
|
|
raw_display = raw_display[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']] |
|
|
dict_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = nba_db['DK_NBA_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nba_db['DK_NBA_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']) |
|
|
|
|
|
raw_display = raw_display[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']] |
|
|
dict_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = nba_db['DK_NBA_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nba_db['DK_NBA_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']) |
|
|
|
|
|
raw_display = raw_display[['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX']] |
|
|
dict_columns = ['PG', 'SG', 'SF', 'PF', 'C', 'G', 'F', 'FLEX'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif type_var == 'Showdown': |
|
|
collection = nba_db[nba_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
|
|
|
DK_seed = raw_display.to_numpy() |
|
|
|
|
|
return DK_seed |
|
|
|
|
|
def init_FD_NBA_lineups(type_var, slate_var, prio_var, prio_mix, nba_db_translation, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = nba_db['FD_NBA_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
|
|
|
collection = nba_db['FD_NBA_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']) |
|
|
|
|
|
raw_display = raw_display[['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']] |
|
|
dict_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = nba_db['FD_NBA_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nba_db['FD_NBA_Secondary_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']) |
|
|
|
|
|
raw_display = raw_display[['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']] |
|
|
dict_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = nba_db['FD_NBA_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nba_db['FD_NBA_Late_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num = ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']) |
|
|
|
|
|
raw_display = raw_display[['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C']] |
|
|
dict_columns = ['PG1', 'PG2', 'SG1', 'SG2', 'SF1', 'SF2', 'PF1', 'PF2', 'C'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
|
|
|
elif type_var == 'Showdown': |
|
|
collection = nba_db[nba_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
|
|
|
FD_seed = raw_display.to_numpy() |
|
|
|
|
|
return FD_seed |
|
|
|
|
|
def init_nhl_baselines(type_var: str, site_var: str, slate_var: str): |
|
|
|
|
|
if slate_var == 'Main': |
|
|
slate_var = 'Main Slate' |
|
|
elif slate_var == 'Secondary': |
|
|
slate_var = 'Secondary Slate' |
|
|
elif slate_var == 'Auxiliary': |
|
|
slate_var = 'Late Slate' |
|
|
|
|
|
if type_var == 'Showdown': |
|
|
collection = nhl_db["Player_Level_SD_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']] |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
sd_raw = raw_display.sort_values(by='Median', ascending=False) |
|
|
dk_sd_roo_raw = sd_raw[sd_raw['site'] == 'Draftkings'] |
|
|
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw = sd_raw[sd_raw['site'] == 'Fanduel'] |
|
|
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].astype(str) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].str.rsplit('-', n=1).str[0].astype(str) |
|
|
|
|
|
dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_roo_raw = None |
|
|
fd_roo_raw = None |
|
|
dk_id_map = None |
|
|
fd_id_map = None |
|
|
|
|
|
else: |
|
|
collection = nhl_db["Player_Level_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'Slate', 'Site', 'timestamp']] |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
dk_roo_raw = raw_display[raw_display['Site'] == 'Draftkings'] |
|
|
fd_roo_raw = raw_display[raw_display['Site'] == 'Fanduel'] |
|
|
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_ID'])) |
|
|
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_ID'])) |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
|
|
|
dk_roo_raw = dk_roo_raw.drop(columns=['player_ID', 'Slate', 'timestamp', 'Site']) |
|
|
fd_roo_raw = fd_roo_raw.drop(columns=['player_ID', 'Slate', 'timestamp', 'Site']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_sd_roo_raw = None |
|
|
fd_sd_roo_raw = None |
|
|
dk_sd_id_map = None |
|
|
fd_sd_id_map = None |
|
|
|
|
|
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 |
|
|
|
|
|
def init_DK_NHL_lineups(type_var, slate_var, prio_var, prio_mix, nhl_db_translation, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = nhl_db['DK_NHL_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nhl_db['DK_NHL_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']) |
|
|
|
|
|
raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']] |
|
|
dict_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = nhl_db['DK_NHL_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nhl_db['DK_NHL_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']) |
|
|
|
|
|
raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']] |
|
|
dict_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = nhl_db['DK_NHL_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nhl_db['DK_NHL_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']) |
|
|
|
|
|
raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX']] |
|
|
dict_columns = ['C1', 'C2', 'W1', 'W2', 'W3', 'D1', 'D2', 'G', 'FLEX'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif type_var == 'Showdown': |
|
|
collection = nhl_db[nhl_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
|
|
|
DK_seed = raw_display.to_numpy() |
|
|
|
|
|
return DK_seed |
|
|
|
|
|
def init_FD_NHL_lineups(type_var, slate_var, prio_var, prio_mix, nhl_db_translation, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = nhl_db['FD_NHL_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
|
|
|
collection = nhl_db['FD_NHL_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']) |
|
|
|
|
|
raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']] |
|
|
dict_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = nhl_db['FD_NHL_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nhl_db['FD_NHL_Secondary_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']) |
|
|
|
|
|
raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']] |
|
|
dict_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = nhl_db['FD_NHL_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = nhl_db['FD_NHL_Late_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num = ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']) |
|
|
|
|
|
raw_display = raw_display[['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G']] |
|
|
dict_columns = ['C1', 'C2', 'W1', 'W2', 'D1', 'D2', 'FLEX1', 'FLEX2', 'G'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
|
|
|
elif type_var == 'Showdown': |
|
|
collection = nhl_db[nhl_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
|
|
|
FD_seed = raw_display.to_numpy() |
|
|
|
|
|
return FD_seed |
|
|
|
|
|
def init_mma_baselines(type_var: str, site_var: str, slate_var: str): |
|
|
|
|
|
if slate_var == 'Main': |
|
|
slate_var = 'Main Slate' |
|
|
elif slate_var == 'Secondary': |
|
|
slate_var = 'Secondary Slate' |
|
|
elif slate_var == 'Auxiliary': |
|
|
slate_var = 'Late Slate' |
|
|
|
|
|
if type_var == 'Showdown': |
|
|
collection = mma_db["Player_Level_SD_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version', 'timestamp']] |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
sd_raw = raw_display.sort_values(by='Median', ascending=False) |
|
|
dk_sd_roo_raw = sd_raw[sd_raw['site'] == 'Draftkings'] |
|
|
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw = sd_raw[sd_raw['site'] == 'Fanduel'] |
|
|
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].astype(str) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].str.rsplit('-', n=1).str[0].astype(str) |
|
|
|
|
|
dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'timestamp', 'site']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_roo_raw = None |
|
|
fd_roo_raw = None |
|
|
dk_id_map = None |
|
|
fd_id_map = None |
|
|
|
|
|
else: |
|
|
collection = mma_db["Player_Level_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id']] |
|
|
raw_display['Team'] = 'MMA' |
|
|
raw_display['Site'] = site_var |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
dk_roo_raw = raw_display[raw_display['Site'] == 'Draftkings'] |
|
|
fd_roo_raw = raw_display[raw_display['Site'] == 'Draftkings'] |
|
|
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_ID'])) |
|
|
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_ID'])) |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
|
|
|
dk_roo_raw = dk_roo_raw.drop(columns=['player_ID']) |
|
|
fd_roo_raw = fd_roo_raw.drop(columns=['player_ID']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_sd_roo_raw = None |
|
|
fd_sd_roo_raw = None |
|
|
dk_sd_id_map = None |
|
|
fd_sd_id_map = None |
|
|
|
|
|
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 |
|
|
|
|
|
def init_DK_MMA_lineups(type_var, slate_var, prio_var, prio_mix, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = mma_db['DK_MMA_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = mma_db['DK_MMA_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = mma_db['DK_MMA_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = mma_db['DK_MMA_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = mma_db['DK_MMA_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = mma_db['DK_MMA_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif type_var == 'Showdown': |
|
|
collection = mma_db[mma_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
|
|
|
DK_seed = raw_display.to_numpy() |
|
|
|
|
|
return DK_seed |
|
|
|
|
|
def init_FD_MMA_lineups(type_var, slate_var, prio_var, prio_mix, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = mma_db['FD_MMA_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
|
|
|
collection = mma_db['FD_MMA_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = mma_db['FD_MMA_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = mma_db['FD_MMA_Secondary_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = mma_db['FD_MMA_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = mma_db['FD_MMA_Late_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num = ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
|
|
|
elif type_var == 'Showdown': |
|
|
collection = mma_db[mma_db_translation[slate_var]] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']) |
|
|
|
|
|
raw_display = raw_display[['CPT', 'FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5']] |
|
|
|
|
|
FD_seed = raw_display.to_numpy() |
|
|
|
|
|
return FD_seed |
|
|
|
|
|
def init_pga_baselines(type_var: str, site_var: str, slate_var: str): |
|
|
|
|
|
if slate_var == 'Main': |
|
|
slate_var = 'Main Slate' |
|
|
elif slate_var == 'Secondary': |
|
|
slate_var = 'Secondary Slate' |
|
|
elif slate_var == 'Auxiliary': |
|
|
slate_var = 'Late Slate' |
|
|
|
|
|
if type_var == 'Showdown': |
|
|
collection = pga_db["Player_Level_Showdown_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Team', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id', 'slate', 'site', 'version']] |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
sd_raw = raw_display.sort_values(by='Median', ascending=False) |
|
|
dk_sd_roo_raw = sd_raw[sd_raw['site'] == 'Draftkings'] |
|
|
dk_sd_id_map = dict(zip(dk_sd_roo_raw['Player'], dk_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw = sd_raw[sd_raw['site'] == 'Fanduel'] |
|
|
fd_sd_id_map = dict(zip(fd_sd_roo_raw['Player'], fd_sd_roo_raw['player_ID'])) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].astype(str) |
|
|
fd_sd_roo_raw['player_ID'] = fd_sd_roo_raw['player_ID'].str.rsplit('-', n=1).str[0].astype(str) |
|
|
|
|
|
dk_sd_roo_raw = dk_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'site']) |
|
|
fd_sd_roo_raw = fd_sd_roo_raw.drop(columns=['player_ID', 'slate', 'version', 'site']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_roo_raw = None |
|
|
fd_roo_raw = None |
|
|
dk_id_map = None |
|
|
fd_id_map = None |
|
|
|
|
|
else: |
|
|
collection = pga_db["Player_Level_ROO"] |
|
|
cursor = collection.find() |
|
|
|
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
raw_display = raw_display[['Player', 'Position', 'Salary', 'Median', 'Own', 'CPT_Own', 'player_id']] |
|
|
raw_display['Team'] = 'PGA' |
|
|
raw_display['Site'] = site_var |
|
|
raw_display = raw_display.rename(columns={"player_id": "player_ID"}) |
|
|
raw_display['Median'] = raw_display['Median'].replace('', 0).astype(float) |
|
|
raw_display = raw_display.loc[raw_display['Median'] > 0] |
|
|
dk_roo_raw = raw_display[raw_display['Site'] == 'Draftkings'] |
|
|
fd_roo_raw = raw_display[raw_display['Site'] == 'Draftkings'] |
|
|
dk_id_map = dict(zip(dk_roo_raw['Player'], dk_roo_raw['player_ID'])) |
|
|
fd_id_map = dict(zip(fd_roo_raw['Player'], fd_roo_raw['player_ID'])) |
|
|
raw_display = raw_display.apply(pd.to_numeric, errors='ignore') |
|
|
|
|
|
dk_roo_raw = dk_roo_raw.drop(columns=['player_ID']) |
|
|
fd_roo_raw = fd_roo_raw.drop(columns=['player_ID']) |
|
|
|
|
|
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'}) |
|
|
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'}) |
|
|
|
|
|
dk_sd_roo_raw = None |
|
|
fd_sd_roo_raw = None |
|
|
dk_sd_id_map = None |
|
|
fd_sd_id_map = None |
|
|
|
|
|
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 |
|
|
|
|
|
def init_DK_PGA_lineups(type_var, slate_var, prio_var, prio_mix, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = pga_db['DK_PGA_Classic_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['DK_PGA_Classic_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = pga_db['DK_PGA_Classic_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['DK_PGA_Classic_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = pga_db['DK_PGA_Classic_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['DK_PGA_Classic_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif type_var == 'Showdown': |
|
|
collection = pga_db['DK_PGA_Showdown_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['DK_PGA_Showdown_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
|
|
|
DK_seed = raw_display.to_numpy() |
|
|
|
|
|
return DK_seed |
|
|
|
|
|
def init_FD_PGA_lineups(type_var, slate_var, prio_var, prio_mix, lineup_num, salary_min, salary_max, player_var2): |
|
|
|
|
|
if prio_var == 'Mix': |
|
|
prio_var = None |
|
|
|
|
|
if type_var == 'Classic': |
|
|
if slate_var == 'Main': |
|
|
collection = pga_db['FD_PGA_Classic_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['FD_PGA_Classic_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Secondary': |
|
|
collection = pga_db['FD_PGA_Classic_Secondary_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['FD_PGA_Classic_seed_frame_Secondary Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif slate_var == 'Auxiliary': |
|
|
collection = pga_db['FD_PGA_Classic_Late_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['FD_PGA_Classic_seed_frame_Late Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
elif type_var == 'Showdown': |
|
|
collection = pga_db['FD_PGA_Showdown_name_map'] |
|
|
cursor = collection.find() |
|
|
raw_data = pd.DataFrame(list(cursor)) |
|
|
names_dict = dict(zip(raw_data['key'], raw_data['value'])) |
|
|
|
|
|
collection = pga_db['FD_PGA_Showdown_seed_frame_Main Slate'] |
|
|
if prio_var == None: |
|
|
if player_var2 != []: |
|
|
player_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
query_conditions = [] |
|
|
|
|
|
for player in player_var2: |
|
|
|
|
|
player_condition = {'$or': [{col: player} for col in player_columns]} |
|
|
query_conditions.append(player_condition) |
|
|
|
|
|
|
|
|
if query_conditions: |
|
|
filter_query = {'$or': query_conditions} |
|
|
cursor1 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find(filter_query, {'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor1 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).limit(math.ceil(lineup_num * (prio_mix / 100))) |
|
|
cursor2 = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort('Own', -1).limit(math.ceil(lineup_num * ((100 - prio_mix) / 100))) |
|
|
raw_display = pd.concat([pd.DataFrame(list(cursor1)), pd.DataFrame(list(cursor2))]) |
|
|
else: |
|
|
cursor = collection.find({'salary': {'$gte': salary_min, '$lte': salary_max}}).sort(prio_var, -1).limit(lineup_num) |
|
|
raw_display = pd.DataFrame(list(cursor)) |
|
|
|
|
|
raw_display = raw_display.drop_duplicates(subset=['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']) |
|
|
|
|
|
raw_display = raw_display[['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6']] |
|
|
dict_columns = ['FLEX1', 'FLEX2', 'FLEX3', 'FLEX4', 'FLEX5', 'FLEX6'] |
|
|
|
|
|
raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) |
|
|
|
|
|
FD_seed = raw_display.to_numpy() |
|
|
|
|
|
return FD_seed |