def elo_stats(scores): try: elo, elo95, los = stat_util.get_elo(scores) return "ELO: %.2f +-%.1f (95%%) LOS: %.1f%%\n" % (elo, elo95, 100 * los) except (ValueError, ZeroDivisionError): return "\n"
def format_results(run_results, run): result = {'style': '', 'info': []} # win/loss/draw count WLD = [run_results['wins'], run_results['losses'], run_results['draws']] if 'spsa' in run['args']: result['info'].append('%d/%d iterations' % (run['args']['spsa']['iter'], run['args']['spsa']['num_iter'])) result['info'].append('%d/%d games played' % (WLD[0] + WLD[1] + WLD[2], run['args']['num_games'])) return result # If the score is 0% or 100% the formulas will crash # anyway the statistics are only asymptotic if WLD[0] == 0 or WLD[1] == 0: result['info'].append('Pending...') return result state = 'unknown' if 'sprt' in run['args']: sprt = run['args']['sprt'] state = sprt.get('state', '') stats = stat_util.SPRT(run_results, elo0=sprt['elo0'], alpha=sprt['alpha'], elo1=sprt['elo1'], beta=sprt['beta'], drawelo=sprt['drawelo']) result['llr'] = stats['llr'] result['info'].append('LLR: %.2f (%.2lf,%.2lf) [%.2f,%.2f]' % (stats['llr'], stats['lower_bound'], stats['upper_bound'], sprt['elo0'], sprt['elo1'])) else: elo, elo95, los = stat_util.get_elo(WLD) # Display the results eloInfo = 'ELO: %.2f +-%.1f (95%%)' % (elo, elo95) losInfo = 'LOS: %.1f%%' % (los * 100) result['info'].append(eloInfo + ' ' + losInfo) if los < 0.05: state = 'rejected' elif los > 0.95: state = 'accepted' result['info'].append('Total: %d W: %d L: %d D: %d' % (sum(WLD), WLD[0], WLD[1], WLD[2])) if state == 'rejected': if WLD[0] > WLD[1]: result['style'] = 'yellow' else: result['style'] = '#FF6A6A' elif state == 'accepted': if 'sprt' in run['args'] and (float(sprt['elo0']) + float(sprt['elo1'])) < 0.0: result['style'] = '#66CCFF' else: result['style'] = '#44EB44' return result
def format_results(run_results, run): result = {'style': '', 'info': []} # win/loss/draw count WLD = [run_results['wins'], run_results['losses'], run_results['draws']] if 'spsa' in run['args']: result['info'].append('%d/%d iterations' % (run['args']['spsa']['iter'], run['args']['spsa']['num_iter'])) result['info'].append('%d/%d games played' % (WLD[0] + WLD[1] + WLD[2], run['args']['num_games'])) return result # If the score is 0% or 100% the formulas will crash # anyway the statistics are only asymptotic if WLD[0] == 0 or WLD[1] == 0: result['info'].append('Pending...') return result state = 'unknown' if 'sprt' in run['args']: sprt = run['args']['sprt'] state = sprt.get('state', '') stats = stat_util.SPRT(run_results, elo0=sprt['elo0'], alpha=sprt['alpha'], elo1=sprt['elo1'], beta=sprt['beta'], drawelo=sprt['drawelo']) result['info'].append('LLR: %.2f (%.2lf,%.2lf) [%.2f,%.2f]' % (stats['llr'], stats['lower_bound'], stats['upper_bound'], sprt['elo0'], sprt['elo1'])) else: elo, elo95, los = stat_util.get_elo(WLD) # Display the results eloInfo = 'ELO: %.2f +-%.1f (95%%)' % (elo, elo95) losInfo = 'LOS: %.1f%%' % (los * 100) result['info'].append(eloInfo + ' ' + losInfo) if los < 0.05: state = 'rejected' elif los > 0.95: state = 'accepted' percent = "" if sum(WLD) > 0: percent = "{:4.2F}%".format(100.0*(WLD[0] + WLD[2]/2.0)/sum(WLD)) result['info'].append('T: %d W: %d L: %d D: %d %s' % (sum(WLD), WLD[0], WLD[1], WLD[2], percent)) if state == 'rejected': if WLD[0] > WLD[1]: result['style'] = 'yellow' else: result['style'] = '#FF6A6A' elif state == 'accepted': result['style'] = '#44EB44' return result
def format_results(run_results, run): result = {'style': '', 'info': []} # win/loss/draw count WLD = [run_results['wins'], run_results['losses'], run_results['draws']] # If the score is 0% or 100% the formulas will crash # anyway the statistics are only asymptotic if WLD[0] == 0 or WLD[1] == 0: result['info'].append('Pending...') return result if 'clop' in run['args']: status = ' '.join(run['args']['clop'].get('status', '-').split()) result['info'].append('Status: %s' % (status)) result['info'].append('Total: %d' % (sum(WLD))) return result state = 'unknown' if 'sprt' in run['args']: sprt = run['args']['sprt'] state = sprt.get('state', '') stats = stat_util.SPRT(run_results, elo0=sprt['elo0'], alpha=sprt['alpha'], elo1=sprt['elo1'], beta=sprt['beta'], drawelo=sprt['drawelo']) result['info'].append('LLR: %.2f (%.2lf,%.2lf) [%.2f,%.2f]' % (stats['llr'], stats['lower_bound'], stats['upper_bound'], sprt['elo0'], sprt['elo1'])) else: elo, elo95, los = stat_util.get_elo(WLD) # Display the results eloInfo = 'ELO: %.2f +-%.1f (95%%)' % (elo, elo95) losInfo = 'LOS: %.1f%%' % (los * 100) result['info'].append(eloInfo + ' ' + losInfo) if los < 0.05: state = 'rejected' elif los > 0.95: state = 'accepted' result['info'].append('Total: %d W: %d L: %d D: %d' % (sum(WLD), WLD[0], WLD[1], WLD[2])) if state == 'rejected': if WLD[0] > WLD[1]: result['style'] = 'yellow' else: result['style'] = '#FF6A6A' elif state == 'accepted': result['style'] = '#44EB44' return result