def leaderboardComputationTask(): profiles = Profile.objects.all() # profiles = [] # profiles.append(Profile.objects.get(uuid="341cc5cd-0f42-45f1-9f66-273ac3ed8b2e")) unsorted_dict = {} for profile in profiles: token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore( profile, "Living Lab", "Social Health Tracker", token) values = aggregateLeaderboardComputation(internalDataStore, "activityStats", leaderboardComputation, False) unsorted_dict[profile.uuid] = LeaderboardRanking({ "average_activity_rate": values[0]["average_activity_rate"], "max_high_activity_rate": values[0]["max_high_activity_rate"], "min_low_activity_rate": values[0]["min_low_activity_rate"] }) #sorted_dict = sorted(unsorted_dict.values(), key=attrgetter('average_activity_rate')) sorted_dict = sorted( unsorted_dict, key=lambda uuid: unsorted_dict[uuid].average_activity_rate, reverse=False) average_activity_rates_list = [] for uuid in sorted_dict: average_activity_rates_list.append( unsorted_dict[uuid].get_average_activity_rate()) for uuid in sorted_dict: profile = Profile.objects.get(uuid=uuid) token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore( profile, "Living Lab", "Social Health Tracker", token) percentileValue = calculatePercentile( average_activity_rates_list, unsorted_dict[uuid].get_average_activity_rate()) user_activity_list = [] user_activity_dict = { "average_activity_rate": unsorted_dict[uuid].get_average_activity_rate(), "max_high_activity_rate": unsorted_dict[uuid].get_max_high_activity_rate(), "min_low_activity_rate": unsorted_dict[uuid].get_min_low_activity_rate(), "rank": { "own": len(sorted_dict) - sorted_dict.index(uuid), "total": len(sorted_dict), "percentile": percentileValue } } user_activity_list.append(user_activity_dict) internalDataStore.saveAnswer("activityStats", user_activity_list)
def leaderboardComputationTask(): profiles = Profile.objects.all() # profiles = [] # profiles.append(Profile.objects.get(uuid="341cc5cd-0f42-45f1-9f66-273ac3ed8b2e")) unsorted_dict = {} for profile in profiles: token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore(profile, "Living Lab", "Social Health Tracker", token) values = aggregateLeaderboardComputation(internalDataStore, "activityStats", leaderboardComputation, False) unsorted_dict[profile.uuid] = LeaderboardRanking({ "average_activity_rate": values[0]["average_activity_rate"], "max_high_activity_rate": values[0]["max_high_activity_rate"], "min_low_activity_rate": values[0]["min_low_activity_rate"]}) #sorted_dict = sorted(unsorted_dict.values(), key=attrgetter('average_activity_rate')) sorted_dict = sorted(unsorted_dict, key = lambda uuid: unsorted_dict[uuid].average_activity_rate, reverse=False) average_activity_rates_list = [] for uuid in sorted_dict: average_activity_rates_list.append(unsorted_dict[uuid].get_average_activity_rate()) for uuid in sorted_dict: profile = Profile.objects.get(uuid=uuid) token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore(profile, "Living Lab", "Social Health Tracker", token) percentileValue = calculatePercentile(average_activity_rates_list, unsorted_dict[uuid].get_average_activity_rate()) user_activity_list = [] user_activity_dict = { "average_activity_rate": unsorted_dict[uuid].get_average_activity_rate(), "max_high_activity_rate": unsorted_dict[uuid].get_max_high_activity_rate(), "min_low_activity_rate": unsorted_dict[uuid].get_min_low_activity_rate(), "rank": {"own": len(sorted_dict) - sorted_dict.index(uuid), "total": len(sorted_dict), "percentile": percentileValue} } user_activity_list.append(user_activity_dict) internalDataStore.saveAnswer("activityStats", user_activity_list)
def findActiveLocationsTask(): profiles = Profile.objects.all() location_frequencies = {} for profile in profiles: token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore(profile, "Living Lab", "Social Health Tracker", token) values = activeLocationsComputation(internalDataStore) print profile.uuid print values for value in values: location_value = tuple((round(value[0],4), round(value[1],4))) if location_value in location_frequencies: location_frequencies[location_value] = location_frequencies[location_value] + 1 else: location_frequencies[location_value] = 1 print location_frequencies location_frequencies_list = [] for key in location_frequencies: print key location_value = { "lat": key[0], "lng": key[1], "count": location_frequencies[key]} location_frequencies_list.append(location_value) print location_frequencies_list for profile in profiles: token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore(profile, "Living Lab", "Social Health Tracker", token) internalDataStore.saveAnswer("activeLocations", location_frequencies_list)
def recentProbeDataScores(): profiles = Profile.objects.all() for profile in profiles: startTime = socialhealth_tasks.getStartTime(6, True) currentTime = time.time() timeRanges = [ (start, start + 3600) for start in range(int(startTime), int(currentTime), 3600) ] probeAnswerKeys = { 'recentActivityProbeByHour': 'ActivityProbe', 'recentSmsProbeByHour': 'SmsProbe', 'recentCallLogProbeByHour': 'CallLogProbe', 'recentBluetoothProbeByHour': 'BluetoothProbe', 'recentWifiProbeByHour': 'WifiProbe', 'recentSimpleLocationProbeByHour': 'LocationProbe', 'recentRunningApplicationsProbeByHour': 'RunningApplicationsProbe', 'recentHardwareInfoProbeByHour': 'HardwareInfoProbe', 'recentAppUsageProbeByHour': 'AppUsageProbe' } # print profile token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore( profile, "Living Lab", "Social Health Tracker", token) for probeAnswerKey, probe in probeAnswerKeys.iteritems(): # print probe probeLevels = aggregateForUser(probe, internalDataStore, probeAnswerKey, timeRanges, probeForTimeRange, False)
def recentProbeDataScores(): # profile = Profile.objects.get(uuid = uuid) profiles = Profile.objects.all() for profile in profiles: startTime = socialhealth_tasks.getStartTime(6, True) currentTime = time.time() timeRanges = [(start, start + 3600) for start in range(int(startTime), int(currentTime), 3600)] probeAnswerKeys = { "recentActivityProbeByHour": "ActivityProbe", "recentSmsProbeByHour": "SmsProbe", "recentCallLogProbeByHour": "CallLogProbe", "recentBluetoothProbeByHour": "BluetoothProbe", "recentWifiProbeByHour": "WifiProbe", "recentSimpleLocationProbeByHour": "LocationProbe", "recentRunningApplicationsProbeByHour": "RunningApplicationsProbe", "recentHardwareInfoProbeByHour": "HardwareInfoProbe", "recentAppUsageProbeByHour": "AppUsageProbe", } print profile token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore( profile, "Living Lab", "Social Health Tracker", token ) for probeAnswerKey, probe in probeAnswerKeys.iteritems(): print probe probeLevels = aggregateForUser( probe, internalDataStore, probeAnswerKey, timeRanges, probeForTimeRange, False ) print probeLevels
def findActiveLocationsTask(): profiles = Profile.objects.all() location_frequencies = {} for profile in profiles: token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore( profile, "Living Lab", "Social Health Tracker", token) values = activeLocationsComputation(internalDataStore) print profile.uuid print values for value in values: location_value = tuple((round(value[0], 4), round(value[1], 4))) if location_value in location_frequencies: location_frequencies[ location_value] = location_frequencies[location_value] + 1 else: location_frequencies[location_value] = 1 print location_frequencies location_frequencies_list = [] for key in location_frequencies: print key location_value = { "lat": key[0], "lng": key[1], "count": location_frequencies[key] } location_frequencies_list.append(location_value) print location_frequencies_list for profile in profiles: token = socialhealth_tasks.getToken(profile, "app-uuid") internalDataStore = socialhealth_tasks.getInternalDataStore( profile, "Living Lab", "Social Health Tracker", token) internalDataStore.saveAnswer("activeLocations", location_frequencies_list)