def TN(analyzer,N): rank=oms.newMap('BST',comparefunction=comparerMap) rankp=oms.newMap('BST',comparefunction=comparerMap) sancocho=om.valueSet(analyzer["indice"]) for papa in sancocho: if oms.contains(rank,papa["company"])==True: new=oms.get(rank,papa["company"]) nueva=int(new.values())+1 oms.put(rank,str(new.keys()),nueva) if papa["company"]=="" and oms.contains(rank,"Independent Owner")==True: news=oms.get(rank,"Independent Owner") nuevas=int(news.values())+1 oms.put(rank,str(news.keys()),nuevas) else: if papa["company"]=="": oms.put(rank,"Independent Owner",1) oms.put(rank,papa["company"],1) for com in list(rank): oms.put(rankp,int(com.values()),str(com.keys())) rankesito=lt.newList() for puesto in range(N): p=oms.maxKey(rankp) lt.addLast(rankesito,dict(list(rank.keys())[list(rank.values()).index(p)],p)) oms.deleteMax(rankp) return rankesito
def TM(analyzer,M): rank=oms.newMap('BST',comparefunction=comparerMap) rankp=oms.newMap('BST',comparefunction=comparerMap) sancocho=om.valueSet(analyzer["indice"]) for papa in sancocho: if oms.contains(rank,papa["company"])==True: new=oms.get(rank,papa["company"]) nueva=lt.newList(new.values()) lt.addLast(nueva,papa["taxi_id"]) oms.put(rank,str(new.keys()),nueva) if papa["company"]=="" and oms.contains(rank,"Independent Owner")==True: news=oms.get(rank,"Independent Owner") nuevas=lt.newList(news.values()) lt.addLast(nuevas,papa["taxi_id"]) oms.put(rank,str(news.keys()),nuevas) else: if papa["company"]=="": oms.put(rank,"Independent Owner",1) oms.put(rank,papa["company"],1) for com in list(rank): oms.put(rankp,lt.size(set(list(com.values()))),str(com.keys())) ranki=lt.newList() for puesto in range(M): p=oms.maxKey(rankp) lt.addLast(ranki,dict(om.keySet(rank)[om.valueSet(rank).index(p)],p)) oms.deleteMax(rankp) return ranki
def updateDateOmap(omap, occurredDate, SevKey, stateKey): """ Args: omap: omap de date occurredDate: datetime con el dia en que sucedio, en formato YY-MM-dd SevKey: str con el nivel de severidad stateKey: str con el estado de ocurrencia Returns: """ dateRoot = om.get(omap, occurredDate) if dateRoot: dateValue = dateRoot[ 'value'] # lo correcto es me.getValue(entry), se usa para optimizar de aqui en adelante else: dateValue = { 'SeverityIndex': MakeMapFormat(2, ints=True), 'StateIndex': MakeMapFormat(23, 'CHAINING'), 'numAccidents': 0 } om.put(omap, occurredDate, dateValue) dateValue['numAccidents'] += 1 updateIndex(dateValue['SeverityIndex'], SevKey) updateIndex(dateValue['StateIndex'], stateKey) return omap
def updateTimeOmap(omap, occurredTime, SevKey): """ Args: omap: omap de time occurredTime: datetime con el la Hora con minutos en que sucedio, en formato HH:MM SevKey: str con el nivel de severidad Returns: """ timeRoot = om.get(omap, occurredTime) if timeRoot: timeValue = timeRoot['value'] else: timeValue = { 'SeverityIndex': MakeMapFormat(2, ints=True), 'numAccidents': 0 } om.put(omap, occurredTime, timeValue) timeValue['numAccidents'] += 1 updateIndex(timeValue['SeverityIndex'], SevKey) return omap
def get(map, key): """ Retorna la pareja lleve-valor con llave igual a key Args: map: La tabla de simbolos key: La llave asociada a la pareja Returns: La tabla de simbolos con la nueva pareja Raises: Exception """ return om.get(map, key)
def getDateInfo(dateOmap, date): """ Para una fecha devuelve una lista de la cantidad de accidentes por severidad y el total de accidentes Args: dateOmap: Order map organizado por fechas date: datetime de la fecha Returns: Entry con la lista y el total """ dateRoot = om.get(dateOmap, date) if dateRoot is None: return None dateEntry = dateRoot['value'] severityList = Op.operationSetMap(dateEntry['SeverityIndex'], Aux.makeListMp, newList('ARRAY_LIST')) severityListAndTotal = { 'list': severityList, 'total': dateEntry['numAccidents'] } return severityListAndTotal
def updateZoneOmap(ZoneOmap, zoneTuple, weekday): """ Args: zoneTuple: tupla con cordenada Latitud, cordenada Longitud ZoneOmap: entry con un omap y un conteo de cordenadas weekday: dia del la semana representado del 1 al 7 Returns: """ zoneRoot = om.get(ZoneOmap, zoneTuple) if zoneRoot: zoneValue = zoneRoot['value'] else: zoneValue = { 'weekdayIndex': MakeMapFormat(1, 'CHAINING', True), 'numAccidents': 0 } om.put(ZoneOmap, zoneTuple, zoneValue) zoneValue['numAccidents'] += 1 updateIndex(zoneValue['weekdayIndex'], weekday) return zoneRoot