Пример #1
0
    def process_starters(self, starters, players, date, site):
        starters_output = []
        for num, player_id in enumerate(starters, start=1):
            player = players[player_id]

            # skip game if starter with insufficient history
            if not self.player_history_met(player, date,
                                           self.min_player_games):
                return None

            # get previous dates to use for accessing dicts
            last_played_date, last_shot_date = utilities.prev_date(
                player.dates,
                date), utilities.prev_date(player.shots_dates, date)

            # access the stats dicts from player object for previous game date
            curr_player_vars = self.create_player_vars(player,
                                                       last_played_date,
                                                       last_shot_date, site,
                                                       'start_p' + str(num))

            starters_output.append(curr_player_vars)

        if len(starters_output) is not 5:
            print 'WRONG NUMBER OF STARTERS'
            return None

        return starters_output
Пример #2
0
    def process_bench(self, starters, player_list, inactive_list, players, date, site):
        position_names = sorted(self.bench_positions.keys())
        bench_output = {key: [] for key in position_names}
        bench_output.update({'WC': []})

        # iterate through each player id on the roster
        for num, player_id in enumerate(player_list, start=1):

            # skip player if player was inactive or in the starting lineup
            if (player_id in inactive_list) or (player_id in starters):
                continue

            # get Player object for given player
            player = players[player_id]

            # skip player if insufficient history
            if not self.player_history_met(player, date, self.min_player_games):
                continue

            # get previous dates to use for accessing dicts
            last_played_date, last_shot_date = utilities.prev_date(player.dates, date), utilities.prev_date(player.shots_dates, date)

            # create player variables from dicts on previous date
            curr_player_vars = self.create_player_vars(player, last_played_date, last_shot_date, site, 'bench_p' + str(num))

            # determine player position and secondary player position
            mapped_position = self.position_mappings[player.position]
            flex_position = self.flex_pos_mappings[player.position]

            # add to list of players in the main position if not full
            if len(bench_output[mapped_position]) < self.bench_positions[mapped_position]:
                bench_output[mapped_position].append(curr_player_vars)
                continue
            # add to secondary position if that list is not full
            elif len(bench_output[flex_position]) < self.bench_positions[flex_position]:
                bench_output[flex_position].append(curr_player_vars)
            # otherwise hold in wildcard position
            else:
                bench_output['WC'].append(curr_player_vars)

        final_bench_output = []
        # fill in positions w/o enough players using wildcard positions
        for pos in position_names:
            max_num_at_position = self.bench_positions[pos]
            num_players_short = max_num_at_position - len(bench_output[pos])
            for _ in range(num_players_short):
                try:
                    bench_output[pos].append(bench_output['WC'].pop(0))
                except:
                    return None

            # if still short return an error
            if (len(bench_output[pos]) < max_num_at_position):
                print 'Still short after adding WCs'
                return None
            else:
                final_bench_output.extend(bench_output[pos])

        return final_bench_output
Пример #3
0
    def form_team_vars(self, home_team, away_team, date):
        '''
        form_team_vars: collects team-level variables by accessing Team objects
        for the home and away teams. Collects them into DataVars objects
        and returns them.
        '''

        # get previous dates by home and away teams
        home_prev_date, away_prev_date = utilities.prev_date(
            home_team.shots_dates,
            date), utilities.prev_date(away_team.shots_dates, date)

        # initialize DataVars object
        team_vars = data_objects.DataVars()

        # go through lists of ShotsData objects and add them into DataVars
        for shots_item in home_team.shots_data:
            team_vars.add_shots_data(shots_item, home_prev_date, 'home')
        for shots_item in away_team.shots_data:
            team_vars.add_shots_data(shots_item, away_prev_date, 'away')

        return team_vars
Пример #4
0
    def form_team_vars(self, home_team, away_team, date):
        '''
        form_team_vars: collects team-level variables by accessing Team objects
        for the home and away teams. Collects them into DataVars objects
        and returns them.
        '''

        # get previous dates by home and away teams
        home_prev_date, away_prev_date = utilities.prev_date(home_team.shots_dates, date), utilities.prev_date(away_team.shots_dates, date)

        # initialize DataVars object
        team_vars = data_objects.DataVars()

        # go through lists of ShotsData objects and add them into DataVars
        for shots_item in home_team.shots_data:
            team_vars.add_shots_data(shots_item, home_prev_date, 'home')
        for shots_item in away_team.shots_data:
            team_vars.add_shots_data(shots_item, away_prev_date, 'away')

        return team_vars
Пример #5
0
    def process_starters(self, starters, players, date, site):
        starters_output = []
        for num, player_id in enumerate(starters, start=1):
            player = players[player_id]

            # skip game if starter with insufficient history
            if not self.player_history_met(player, date, self.min_player_games):
                return None

            # get previous dates to use for accessing dicts
            last_played_date, last_shot_date = utilities.prev_date(player.dates, date), utilities.prev_date(player.shots_dates, date)

            # access the stats dicts from player object for previous game date
            curr_player_vars = self.create_player_vars(player, last_played_date, last_shot_date, site, 'start_p' + str(num))

            starters_output.append(curr_player_vars)

        if len(starters_output) is not 5:
            print 'WRONG NUMBER OF STARTERS'
            return None

        return starters_output
Пример #6
0
 def find_prev_dates(home_team, away_team, date):
     home_prev_date = utilities.prev_date(home_team.dates, date)
     away_prev_date = utilities.prev_date(away_team.dates, date)
     return home_prev_date, away_prev_date
Пример #7
0
 def find_prev_dates(home_team, away_team, date):
     home_prev_date = utilities.prev_date(home_team.dates, date)
     away_prev_date = utilities.prev_date(away_team.dates, date)
     return home_prev_date, away_prev_date
Пример #8
0
    def process_bench(self, starters, player_list, inactive_list, players,
                      date, site):
        position_names = sorted(self.bench_positions.keys())
        bench_output = {key: [] for key in position_names}
        bench_output.update({'WC': []})

        # iterate through each player id on the roster
        for num, player_id in enumerate(player_list, start=1):

            # skip player if player was inactive or in the starting lineup
            if (player_id in inactive_list) or (player_id in starters):
                continue

            # get Player object for given player
            player = players[player_id]

            # skip player if insufficient history
            if not self.player_history_met(player, date,
                                           self.min_player_games):
                continue

            # get previous dates to use for accessing dicts
            last_played_date, last_shot_date = utilities.prev_date(
                player.dates,
                date), utilities.prev_date(player.shots_dates, date)

            # create player variables from dicts on previous date
            curr_player_vars = self.create_player_vars(player,
                                                       last_played_date,
                                                       last_shot_date, site,
                                                       'bench_p' + str(num))

            # determine player position and secondary player position
            mapped_position = self.position_mappings[player.position]
            flex_position = self.flex_pos_mappings[player.position]

            # add to list of players in the main position if not full
            if len(bench_output[mapped_position]
                   ) < self.bench_positions[mapped_position]:
                bench_output[mapped_position].append(curr_player_vars)
                continue
            # add to secondary position if that list is not full
            elif len(bench_output[flex_position]
                     ) < self.bench_positions[flex_position]:
                bench_output[flex_position].append(curr_player_vars)
            # otherwise hold in wildcard position
            else:
                bench_output['WC'].append(curr_player_vars)

        final_bench_output = []
        # fill in positions w/o enough players using wildcard positions
        for pos in position_names:
            max_num_at_position = self.bench_positions[pos]
            num_players_short = max_num_at_position - len(bench_output[pos])
            for _ in range(num_players_short):
                try:
                    bench_output[pos].append(bench_output['WC'].pop(0))
                except:
                    return None

            # if still short return an error
            if (len(bench_output[pos]) < max_num_at_position):
                print 'Still short after adding WCs'
                return None
            else:
                final_bench_output.extend(bench_output[pos])

        return final_bench_output