def badge_test(badge_name): people = get_random_people(250, refset_only=True) people.sort(key=attrgetter(badge_name), reverse=False) refset = [getattr(p, badge_name) for p in people] percentiles = [0, .25, .5, .75, .9, .99] indexes = [int(i * len(refset)) for i in percentiles] people_summaries = [(p.impactstory_url, p.full_name, getattr(p, badge_name)) for p in people] people_at_percentiles = [people_summaries[i] for i in indexes] percentile_exemplars = zip(percentiles, people_at_percentiles) people_above_90th = people_summaries[int(0.9 * len(refset)):] detailed_percentiles = [x * .01 for x in range(100)] detailed_indexes = [int(i * len(refset)) for i in detailed_percentiles] detailed_percentile_values = [refset[i] for i in detailed_indexes] refset_response = [] for (percent, value) in zip(detailed_percentiles, detailed_percentile_values): refset_response += [u"{}: {:.2f}".format(int(100 * percent), value)] response = { "_badge_name": badge_name, "_percentile_exemplars": percentile_exemplars, "people_above_90th": people_above_90th, "refset": refset_response } return jsonify(response)
def badge_test(badge_name): people = get_random_people(250, refset_only=True) people.sort(key=attrgetter(badge_name), reverse=False) refset = [getattr(p, badge_name) for p in people] percentiles = [0, .25, .5, .75, .9, .99] indexes = [int(i * len(refset)) for i in percentiles] people_summaries = [(p.impactstory_url, p.full_name, getattr(p, badge_name)) for p in people] people_at_percentiles = [people_summaries[i] for i in indexes] percentile_exemplars = zip(percentiles, people_at_percentiles) people_above_90th = people_summaries[int(0.9*len(refset)):] detailed_percentiles = [x * .01 for x in range(100)] detailed_indexes = [int(i * len(refset)) for i in detailed_percentiles] detailed_percentile_values = [refset[i] for i in detailed_indexes] refset_response = [] for (percent, value) in zip(detailed_percentiles, detailed_percentile_values): refset_response += [u"{}: {:.2f}".format(int(100*percent), value)] response = { "_badge_name": badge_name, "_percentile_exemplars": percentile_exemplars, "people_above_90th": people_above_90th, "refset": refset_response } return jsonify(response)
def random_people(n): people = get_random_people(n) summary = [(p.impactstory_url, p.full_name) for p in people] response = {"people": summary} return jsonify(response)