def te(): 'Generates a base te configuration' return { 'weeks': util.fantasy_full_weeks(), 'position': 'TE', 'cost_baseline': 8, 'sortBy': 'receiving_yds', 'sample_size': 20, 'sample_trim': 20 * trim(), 'calc_fantasy_stats': fantasy_pts.calc_pos_plyr, 'generate_plyr_stats_dict': fantasy_pts.generate_pos_plyr_stats_dict, 'generate_plyr_default_dict': fantasy_pts.generate_pos_plyr_default_dict }
def qb(): 'Generates a base qb configuration' return { 'weeks': util.fantasy_full_weeks(), 'position': 'QB', 'cost_baseline': 14, 'sortBy': 'passing_yds', 'sample_size': 20, 'sample_trim': 20 * trim(), 'calc_fantasy_stats': fantasy_pts.calc_qb, 'generate_plyr_stats_dict': fantasy_pts.generate_qb_plyr_stats_dict, 'generate_plyr_default_dict': fantasy_pts.generate_qb_plyr_default_dict }
def rb(): 'Generates a base qb configuration' return { 'weeks': util.fantasy_full_weeks(), 'position': 'RB', 'cost_baseline': 16, 'sortBy': 'rushing_yds', 'sample_size': 30, 'sample_trim': 30 * trim(), 'calc_fantasy_stats': fantasy_pts.calc_pos_plyr, 'generate_plyr_stats_dict': fantasy_pts.generate_pos_plyr_stats_dict, 'generate_plyr_default_dict': fantasy_pts.generate_pos_plyr_default_dict }
def generate_plyr_info(plyr, config): 'Generates a player object and associated core stats' plyr_id = plyr.player_id # query player game weeks config['weeks'] = util.fantasy_full_weeks() full_games = query.aggregate_plyr_games(plyr_id, config) plyr_full_aggregate = query.aggregate_plyr_stats(plyr_id, config) if plyr_full_aggregate: plyr_full_dict = config['generate_plyr_stats_dict'](plyr_full_aggregate[0]) else: plyr_full_dict = config['generate_plyr_default_dict']() # query player stats (weeks 1-8) config['weeks'] = util.fantasy_beg_weeks() beg_games = query.aggregate_plyr_games(plyr_id, config) plyr_beg_aggregate = query.aggregate_plyr_stats(plyr_id, config) if plyr_beg_aggregate: plyr_beg_dict = config['generate_plyr_stats_dict'](plyr_beg_aggregate[0]) else: plyr_beg_dict = config['generate_plyr_default_dict']() # query player stats (weeks 8-16) config['weeks'] = util.fantasy_end_weeks() end_games = query.aggregate_plyr_games(plyr_id, config) plyr_end_aggregate = query.aggregate_plyr_stats(plyr_id, config) if plyr_end_aggregate: plyr_end_dict = config['generate_plyr_stats_dict'](plyr_end_aggregate[0]) else: plyr_end_dict = config['generate_plyr_default_dict']() # calculate player fantasy points # TODO: better naming convention than config to indicate dynamic methods in object full_pts = config['calc_fantasy_stats'](plyr_full_dict) beg_pts = config['calc_fantasy_stats'](plyr_beg_dict) end_pts = config['calc_fantasy_stats'](plyr_end_dict) # total weeks, 1-8 weeks, 9-16 weeks played full_weeks = calc_plyr_weeks(full_games) full_weeks_played = len(full_weeks) beg_weeks = calc_plyr_weeks(beg_games) beg_weeks_played = len(beg_weeks) end_weeks = calc_plyr_weeks(end_games) end_weeks_played = len(end_weeks) full_avg_pts = (full_pts / full_weeks_played) if full_pts > 0 else 0 beg_avg_pts = (beg_pts / beg_weeks_played) if beg_pts > 0 else 0 end_avg_pts = (end_pts / end_weeks_played) if end_pts > 0 else 0 availability = (full_weeks_played / 15) if full_weeks_played > 0 else 0 print 'Name: %s, Pts %d %.1f' % (plyr.player, full_pts, full_avg_pts) return { 'id': plyr_id, 'name': plyr.player, 'weeks': full_weeks_played, 'pts': full_pts, 'avg_pts': full_avg_pts, 'beg_pts': beg_pts, 'beg_avg_pts': beg_avg_pts, 'end_pts': end_pts, 'end_avg_pts': end_avg_pts, 'availability': availability }