Skip to content

Instantly share code, notes, and snippets.

@fangeugene
Last active April 12, 2017 22:47
Show Gist options
  • Save fangeugene/522ac4a498ec53311857ff04547e32c6 to your computer and use it in GitHub Desktop.
Save fangeugene/522ac4a498ec53311857ff04547e32c6 to your computer and use it in GitHub Desktop.
2017 Division Power
from consts.event_type import EventType
from database.team_query import EventTeamsQuery
from database.event_query import TeamYearEventsQuery
teams = EventTeamsQuery('2017hop').fetch()
team_events_futures = []
for team in teams:
team_events_futures.append(TeamYearEventsQuery(team.key.id(), 2017).fetch_async())
team_event = {}
for team, team_events_future in zip(teams, team_events_futures):
team_events = sorted(team_events_future.get_result(), key=lambda e: e.start_date)
team_events = filter(lambda e: e.event_type_enum not in EventType.CMP_EVENT_TYPES, team_events)
event = team_events[-1]
event.prep_details()
team_event[team.key.id()] = event
gear_stats = {}
pressure_stats = {}
for team, event in team_event.items():
gear_stats[team] = event.details.predictions['stat_mean_vars']['qual']['gears']['mean'][team]
pressure_stats[team] = event.details.predictions['stat_mean_vars']['qual']['pressure']['mean'][team]
aggregate_stats = {}
for team, gear_stat in gear_stats.items():
pressure_stat = pressure_stats[team]
aggregate_stats[team] = gear_stat/max(gear_stats.values()) + pressure_stat/max(pressure_stats.values())
#aggregate_stats[team] = gear_stat * 10 + pressure_stat
print 'Rank'.ljust(7), 'Team'.ljust(7), 'Combined Power'.ljust(15), 'Gear Power'.ljust(15), 'Fuel Power'.ljust(15)
for i, (team, val) in enumerate(sorted(aggregate_stats.items(), key=lambda x: -x[1])):
print str(i+1).ljust(7), team[3:].ljust(7), str(val).ljust(15), str(gear_stats[team]).ljust(15), str(pressure_stats[team]).ljust(15)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment