This repository has been archived by the owner on Nov 21, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcalculations.py
74 lines (60 loc) · 2.54 KB
/
calculations.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
from math import sqrt
def getRarestMedal(user, medalRates):
for medal in medalRates:
if medal["id"] in user["medals"]:
return medal["id"]
def getMedalRarity(userData):
allMedals = []
medalOccurence=[]
for medals in map(lambda x: x["medals"], userData):
try:
allMedals.extend(medals)
except:
print("Some medals didn't get included: " + medals)
individualMedals = set(allMedals)
medalOccurence = list(map(lambda x: {"medal":x, "count":allMedals.count(x)}, individualMedals))
medalRates = list(map(lambda x: {"id":x["medal"], "frequency": (100*x["count"]/len(userData))}, medalOccurence))
return medalRates
def combineData(user, rarestMedal, ppstats):
finalData = {}
finalData["id"] = user["id"]
finalData["name"] = user["name"]
finalData["country_code"] = user["country_code"]
finalData["total_pp"] = ppstats["totalpp"]
finalData["stdev_pp"] = ppstats["stdevpp"]
finalData["standard_pp"] = ppstats["standardpp"]
finalData["taiko_pp"] = ppstats["taikopp"]
finalData["ctb_pp"] = ppstats["ctbpp"]
finalData["mania_pp"] = ppstats["maniapp"]
finalData["standard_global"] = user["stdranks"]["global"]
finalData["taiko_global"] = user["taikoranks"]["global"]
finalData["ctb_global"] = user["ctbranks"]["global"]
finalData["mania_global"] = user["maniaranks"]["global"]
finalData["standard_country"] = user["stdranks"]["country"]
finalData["taiko_country"] = user["taikoranks"]["country"]
finalData["ctb_country"] = user["ctbranks"]["country"]
finalData["mania_country"] = user["maniaranks"]["country"]
finalData["medal_count"] = user["medals_count"]
finalData["badge_count"] = user["badges_count"]
finalData["rarest_medal"] = rarestMedal
finalData["ranked_maps"] = user["rankedmaps"]
finalData["loved_maps"] = user["lovedmaps"]
finalData["replays_watched"] = user["replays"]
finalData["avatar_url"] = user["avatar_url"]
for key in finalData.keys():
if finalData[key] is None:
finalData[key] = "NULL"
return finalData
def calculateStats(rawPP):
stats = {}
stats["totalpp"] = sum(rawPP)
stats["stdevpp"] = stats["totalpp"] - 2*calculateStDevPP(rawPP)
stats["standardpp"] = rawPP[0]
stats["taikopp"] = rawPP[1]
stats["ctbpp"] = rawPP[2]
stats["maniapp"] = rawPP[3]
return stats
def calculateStDevPP(rawPP):
mean = sum(rawPP) / len(rawPP)
summ = sum([pow(float(ppVal)-mean, 2) for ppVal in rawPP])
return sqrt(summ/(len(rawPP)-1))