def partitionUsers(expertModels, expertise): for userData in UsersData._usersData: pValues = [] for expertModel in expertModels: userLocation = (userData[2], userData[3]) isExpert = userData[4] == expertise p = Utility.getModelValue(expertModel, userLocation, isExpert) pValues.append((p, expertModel['regionName'])) maxPRegion = max(pValues, key = itemgetter(0))[1] if len(userData) == 5: userData.append(maxPRegion) else: userData[5] = maxPRegion UsersData._isPartitioned = True
def getRankedExperts(self, expertise, userLocation): if len(self._expertModelsDict) == 0: self._modelGenerator.loadCachedModels() self._expertModelsDict = self._modelGenerator.getExpertImpactModels()[expertise] expertImpactList = [] for expert in self._expertModelsDict: models = self._expertModelsDict[expert] modelValue = 0 prevModelValue = 0 for model in models: modelValue = Utility.getModelValue(model, userLocation, True) modelValue = max(modelValue, prevModelValue) prevModelValue = modelValue expertImpactList.append((modelValue, expert)) rankedExpertsData = sorted(expertImpactList, key = itemgetter(0), reverse = True) rankedExperts = [] print rankedExpertsData for rankedExpertData in rankedExpertsData: rankedExperts.append(rankedExpertData[1]) return rankedExperts