import pandas as pd import numpy as np import math from database import * from datetime import datetime # Probably should have done this in a dictionary to start with 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']) # load_display = raw_display[raw_display['Position'] != 'K'] 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']) # load_display = raw_display[raw_display['Position'] != 'K'] 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names 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: # Create a condition for each player to check if they appear in any column player_condition = {'$or': [{col: player} for col in player_columns]} query_conditions.append(player_condition) # Combine all player conditions with $or 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'] # Map names raw_display[dict_columns] = raw_display[dict_columns].apply(lambda x: x.map(names_dict)) FD_seed = raw_display.to_numpy() return FD_seed