def calc(): pool = Pool.init_for_ratings() rates = {player['id']: Rate(1500, 200, 0.06) for player in pool.fg_player} history = {player['id']: [] for player in pool.fg_player} for t in sorted(pool.tournaments.values(), key=attrgetter('end_at_desc'), reverse=True): o = {index: rate.copy() for index, rate in rates.items()} m = {index: [] for index in rates.keys()} for match in t.matches: fg1 = match.player1.player.id fg2 = match.player2.player.id if fg1 != 0 and fg2 != 0: w1, w2 = match.p1_win_count, match.p2_win_count m[fg1].extend([(o[fg2], WIN) for _ in range(w1)] + [(o[fg2], LOSE) for _ in range(w2)]) m[fg2].extend([(o[fg1], WIN) for _ in range(w2)] + [(o[fg1], LOSE) for _ in range(w1)]) for index, rate in rates.items(): if m[index]: rate.add_match(m[index]) history[index].append((t.date_string, str(rate.rating))) for pair in sorted(rates.items(), key=lambda x: x[1].mu, reverse=True): index, rate = pair[0], pair[1] if rate.rd < 50: print(pool.players[index].name + "\t" + str(int(rate.rating)) + "\t" + str(int(rate.rd)))
from database.common import Table from model.Pool import Pool pool = Pool.init_for_create_rel() cp = Table('challo_participant') cp.update_all([('player_id', None)]) i = 0 for participant in pool.participants.values(): found = [] for player in pool.players.values(): if player.maybe(participant.name): cp.update_with_tournament_id(participant.tournament_id, participant.id, [('player_id', player.id)]) found.append(player.name) i += 1 if len(found) > 1: print('duplicated candidate for {0} : {1} = {2}'.format(participant.tournament.name, participant.name, ','.join(found))) print("participants {0}".format(i))
def vstable(): s, pool = Pool.init_for_standing('cpt-finals-2016', None) return template('standing', pool=pool, standing=s)
def rate(player_and_labels=None): player_urls, pool = Pool.init_for_ratings(player_and_labels=player_and_labels) return template('rate', pool=pool, player_urls=player_urls)
def ratings(labels=None): _, pool = Pool.init_for_ratings(labels=labels) return template('ratings', pool=pool)
def standing(standing_url, labels=None): s, pool = Pool.init_for_standing(standing_url, labels) return template('standing', pool=pool, standing=s)
def player(player_url, labels=None): player_id, pool = Pool.init_for_player(player_url, labels) return template('player', pool=pool, player_id=player_id)
def vs(p1, p2, labels=None): p1_id, p2_id, pool = Pool.init_for_vs(p1, p2, labels) return template('vs', pool=pool, p1=p1_id, p2=p2_id)
def tournament(challo_url): tournament_id, pool = Pool.init_for_tournament(challo_url) return template('tournament', pool=pool, tournament_id=tournament_id)
def tournaments(labels=None): return template('tournaments', pool=Pool.init_for_tournaments(labels))
def players(labels=None): return template('players', pool=Pool.init_for_players(labels))