@@ -744,7 +744,11 @@ def _sum_q(
744744 )
745745 comparison_count += 1
746746
747- adjusted_mu += margin_adjustment / comparison_count
747+ adjusted_mu += (
748+ (margin_adjustment / comparison_count )
749+ if comparison_count
750+ else margin_adjustment
751+ )
748752
749753 summed = math .exp (adjusted_mu / c )
750754 for q , team_q in enumerate (team_ratings ):
@@ -830,7 +834,11 @@ def _compute(
830834 )
831835 comparison_count += 1
832836
833- adjusted_mu_i += margin_adjustment / comparison_count
837+ adjusted_mu_i += (
838+ (margin_adjustment / comparison_count )
839+ if comparison_count
840+ else margin_adjustment
841+ )
834842
835843 i_mu_over_c = math .exp (adjusted_mu_i / c )
836844
@@ -1075,10 +1083,8 @@ def _calculate_team_ratings(
10751083
10761084 :return: A list of :class:`PlackettLuceTeamRating` objects.
10771085 """
1078- if ranks :
1079- rank = self ._calculate_rankings (game , ranks )
1080- else :
1081- rank = self ._calculate_rankings (game )
1086+ if ranks is None :
1087+ ranks = self ._calculate_rankings (game )
10821088
10831089 result = []
10841090 for index , team in enumerate (game ):
@@ -1097,7 +1103,7 @@ def _calculate_team_ratings(
10971103 sigma_squared_summed += (player .sigma * balance_weight ) ** 2
10981104 result .append (
10991105 PlackettLuceTeamRating (
1100- mu_summed , sigma_squared_summed , team , int (rank [index ])
1106+ mu_summed , sigma_squared_summed , team , int (ranks [index ])
11011107 )
11021108 )
11031109 return result
@@ -1124,15 +1130,15 @@ def _calculate_rankings(
11241130 return []
11251131
11261132 if ranks :
1127- team_scores = [ranks [i ] or i for i , _ in enumerate (game )]
1133+ team_scores = []
1134+ for index , _ in enumerate (game ):
1135+ team_scores .append (ranks [index ] or index )
11281136 else :
11291137 team_scores = [i for i , _ in enumerate (game )]
11301138
1131- output_ranks : dict [int , float ] = {}
1132- s = 0
1133- for index , value in enumerate (team_scores ):
1134- if index > 0 :
1135- if team_scores [index - 1 ] < team_scores [index ]:
1136- s = index
1137- output_ranks [index ] = s
1138- return list (output_ranks .values ())
1139+ sorted_scores = sorted (team_scores )
1140+ rank_map : dict [float , int ] = {}
1141+ for index , value in enumerate (sorted_scores ):
1142+ if value not in rank_map :
1143+ rank_map [value ] = index
1144+ return [rank_map [v ] for v in team_scores ]
0 commit comments