| import json |
| from pathlib import Path |
|
|
|
|
| def init_mapper_idx(mappers_path): |
| """"Indexes beatmap mappers and mapper idx.""" |
| path = Path(mappers_path) |
|
|
| if not path.exists(): |
| raise ValueError(f"mappers_path {path} not found") |
|
|
| |
| with open(path, 'r') as file: |
| data = json.load(file) |
|
|
| |
| beatmap_mapper = {} |
| for item in data: |
| beatmap_mapper[item['id']] = item['user_id'] |
|
|
| |
| unique_user_ids = list(set(beatmap_mapper.values())) |
|
|
| |
| mapper_idx = {user_id: idx for idx, user_id in enumerate(unique_user_ids)} |
| num_mapper_classes = len(unique_user_ids) |
|
|
| return beatmap_mapper, mapper_idx, num_mapper_classes |
|
|
|
|
| path = "../datasets/beatmap_users.json" |
| beatmap_mapper, mapper_idx, num_mapper_classes = init_mapper_idx(path) |
|
|
| print("Number of mapper classes:", num_mapper_classes) |
| print("Number of beatmaps:", len(beatmap_mapper)) |
| |
| maps_per_mapper = {} |
| for beatmap_id in beatmap_mapper: |
| user_id = beatmap_mapper[beatmap_id] |
| if user_id not in maps_per_mapper: |
| maps_per_mapper[user_id] = 0 |
| maps_per_mapper[user_id] += 1 |
|
|
| |
| average_maps_per_mapper = len(beatmap_mapper) / num_mapper_classes |
| print("Average maps per mapper class:", average_maps_per_mapper) |
|
|
| |
| median_maps_per_mapper = sorted(maps_per_mapper.values())[num_mapper_classes // 2] |
| print("Median maps per mapper class:", median_maps_per_mapper) |
|
|
| |
| max_maps = max(maps_per_mapper.values()) |
| max_maps_mapper = [user_id for user_id in maps_per_mapper if maps_per_mapper[user_id] == max_maps] |
| print("Mapper with most number of maps:", max_maps_mapper) |
| print("Number of maps:", max_maps) |
|
|