Exemple #1
0
 def ceiling_points(self, **kwargs):
     """
     Return score variance
     """
     if not self._points:
         self.get_points()
     return MathUtils.max(self._points)
Exemple #2
0
 def _season_points(self, **kwargs):
     """
     Calculate points for the whole season
     """
     if not self._points:
         self.get_points()
     return MathUtils.sum(self._points)
Exemple #3
0
 def floor_points(self, **kwargs):
     """
     Return score variance
     """
     if not self._points:
         self.get_points()
     return MathUtils.min(self._points)
Exemple #4
0
 def std_dev_points(self, **kwargs):
     """
     Return score variance
     """
     if not self._points:
         self.get_points()
     return MathUtils.std(self._points)
Exemple #5
0
 def median_points(self, **kwargs):
     """
     Return median score
     """
     if not self._points:
         self.get_points()
     return MathUtils.median(self._points)
Exemple #6
0
 def get_context_data(self, **kwargs):
     context = super(PlayerDetail, self).get_context_data(**kwargs)
     player = context['object']
     stat_list = player.stats.all()
     stat_keys = filter(lambda x: x not in ['50', '51', '52', '53', '54', '55', '56', '57'], stat_list[0].stat_data.keys())
     columns = filter(lambda x: x[0] in stat_keys, STATS.items())
     stat_headers = [ stat_item[1][0] for stat_item in columns ]
     stat_headers.insert(0, 'Week #')
     stat_headers.append('Points')
     context['stat_headers'] = stat_headers
     context['stat_list'] = []
     column_lists = { key: [] for key, value in columns }
     for stat in stat_list:
         if int(player.bye_week) == stat.week_num:
             continue
         total_points = stat.total_points()
         stat_week = []
         stat_week.append(stat.week_num)
         for key, value in columns:
             stat_week.append(stat.stat_data[key])
             column_lists[key].append(stat.stat_data[key])
         stat_week.append(total_points)
         context['stat_list'].append(stat_week)
     avg_stats = ['Avg']
     for key, value in columns:
         avg_str = "%.1f ± %.1f" % (
                 MathUtils.mean(column_lists[key]),
                 MathUtils.std(column_lists[key]),
                 )
         avg_stats.append(avg_str)
     avg_stats.append(player.mean_points())
     context['stat_list'].append(avg_stats)
     points = player.get_points()
     context['stat_rows'] = [
             ("Total Points", player._season_points()),
             ("Geometric Mean", player.gmean_points()),
             ("Arithmetic Mean", player.mean_points()),
             ("Std Dev", player.std_dev_points()),
             ("Median", player.median_points()),
             ("Floor", player.floor_points()),
             ("Ceiling", player.ceiling_points()),
             ("Games Played", player.games_played()),
             ("Risk Factor", '%.2f%%' % player.risk_factor()),
             ]
     context['page_title'] = '%s %s Detail' % (player.first_name, player.last_name)
     return context
Exemple #7
0
 def normalize_points(self, **kwargs):
     """
     Returns a list of points normalized to 1.0
     """
     if not self._points:
         self.get_points()
     result = MathUtils.normalize(self._points, **kwargs)
     return result
Exemple #8
0
 def gmean_points(self, **kwargs):
     """
     Return the mean score
     """
     if not self._points:
         self.get_points()
     pts = filter(lambda x: x != 0, self.normalize_points())
     return MathUtils.gmean(pts)
Exemple #9
0
    def get_context_data(self, **kwargs):
        context = super(TeamDetail, self).get_context_data(**kwargs)
        team = context['object']
        weeks = range(1, League.objects.get(league_key=self.kwargs.get('league_key')).current_week + 1)
        context['stat_headers'] = ['Week #'] + self.__class__.position_list
        context['stat_list'] = []
        for week in weeks:
            lineup = team.players.filter(roster__week=week)
            player_list = [ player
                    for position in self.__class__.unique_list
                    for player in team.players.filter(Q(roster__position=position), Q(roster__week=week))
                    ]
            stat_week = [ {'week': week} ] + [ {'player': player} for player in player_list ]
            points = MathUtils.sum([ roster.player.get_weekly_points(week) for roster in team.roster.filter(week=week).exclude(position='BN')])
            lower_stat = [ {'points': 'Total: %.2f' % points} ] + [ {'points': '%.2f' % player.get_weekly_points(week)} for player in player_list ]
            context['stat_list'].append(stat_week)
            context['stat_list'].append(lower_stat)

        return context