def __get_parsed_videos(self, season: int) -> Dict[int, ParsedVideo]: """ Load the parsed videos for the given season. Parameters: season (int): The season for which we load the parsed videos. Returns: The parsed video data for this season. """ parsed_videos = dict() for episode in itertools.count(1): parsed_video = VideoParser.load_parsed_video(season, episode) if parsed_video is None: break else: parsed_videos[episode] = parsed_video return parsed_videos
def __latest_available_episode(self, predict_season: int, latest_episode: int) -> int: """ Determine the latest episode that is available and can be used in the prediction season. Arguments: predict_season (int): The season for which the prediction is made. latest_episode (int): The latest episode of the prediction season which may be used as data. Returns: The latest available and usable episode of the prediction season. """ max_episode = 0 for i in range(1, latest_episode + 1): if VideoParser.has_parsed_video(predict_season, i): max_episode = i else: return max_episode return max_episode
from Data.PlayerData import get_is_mol from Layers.Appearance.AppearanceExtractor import AppearanceExtractor from Layers.Appearance.VideoParser import VideoParser, ParsedVideo from scipy.stats import pearsonr, kendalltau import itertools TEST_SEASONS = {13, 14, 15, 16, 17, 18, 19, 20} appearances = dict() for season in TEST_SEASONS: for episode in itertools.count(1): parsed_video = VideoParser.load_parsed_video(season, episode) if parsed_video is None: break for player in parsed_video.alive_players: if not get_is_mol(player): appearance = AppearanceExtractor.get_relative_occurrence(player, parsed_video, [True]) appearances[player] = appearances.get(player, []) + [appearance] input = [] output = [] for player, features in appearances.items(): for feat1, feat2 in itertools.combinations(features, 2): input.append(feat1) output.append(feat2) r, p_value = pearsonr(input, output) print("Pearson Test (Between):") print("R value: " + str(r)) print("R-squared value: " + str(r ** 2))
# Show at which frames each player occurs in a given episode. from Data.PlayerData import get_name from Layers.Appearance.VideoParser import VideoParser, ParsedVideo SEASON = 17 EPISODE = 5 parsed_video = VideoParser.load_parsed_video(SEASON, EPISODE) player_occurrences = parsed_video.player_occurrences alive_players = parsed_video.alive_players for player, occurrences in player_occurrences.items(): if player in alive_players: print(get_name(player)) print(sorted(list(occurrences))) total_face_frames = 0 for player, occurrences in player_occurrences.items(): if player in alive_players: total_face_frames += len(occurrences) for player, occurrences in player_occurrences.items(): if player in alive_players: print(get_name(player)) print(len(occurrences) / total_face_frames)