def compute_trueskill_ranking(matches): env = TrueSkill(0, 0.5) env.beta = 0.025 * (0.5 ** 2) * len(matches) env.tau = 0 player_objects = defaultdict(lambda: env.create_rating()) for match in matches: system_name0, system_name1, win0, win1 = match player0 = player_objects[system_name0] player1 = player_objects[system_name1] if win0 == 1 and win1 == 0: new_player0, new_player1 = rate_1vs1(player0, player1) elif win1 == 1 and win0 == 0: new_player1, new_player0 = rate_1vs1(player1, player0) else: new_player0, new_player1 = rate_1vs1(player0, player1, drawn=True) player_objects[system_name0] = new_player0 player_objects[system_name1] = new_player1 ranking = sorted(player_objects.items(), key=lambda x: x[1].mu, reverse=True) return ranking