def MstFreqDateAndMstFreqStateInRgDates(dateOmap, date1, date2): """ Para un rango de fechas retorna la fecha con mas accidentes y el estado con mas accidentes Args: dateOmap: Order map organizado por fechas date1: datetime de la fecha de la primera fecha date2: datetime de la fecha de la segunda fecha Returns: dobleentry con un entry con la fecha el numero de accidentes en esa fecha y un entry con el estado el numero de accidentes en ese estado """ frequency_fun = Aux.FrequencyInMapAndFrequentKeyForOmp('StateIndex') freqAndFrequencyForm = { 'KeyFrequent': MakeMaxFormat(False), 'map': MakeMapFormat(40) } stateFrequencyAndMfDate = Op.operationRangeOmp(dateOmap, date1, date2, frequency_fun, freqAndFrequencyForm) mostFrequentState = Op.operationSetMap(stateFrequencyAndMfDate['map'], Aux.FrequentMp, MakeMaxFormat(False)) mostFreqDateAndMostFreqState = { 'mstDate': stateFrequencyAndMfDate['KeyFrequent'], 'mstState': mostFrequentState } return mostFreqDateAndMostFreqState
def weekdayFrequencyListInArea(zoneOmap, cPoint, dist): """ Para un area definida por una latitud una longitud y una distancia devuelve una lista de la cantidad de accidentes por severidad y el total de accidentes Args: Returns: Entry con la lista y el total """ cir_fun = Aux.frequencyInMapForOmpInCircle(cPoint, dist, 'weekdayIndex') point1, point2 = (cPoint[0] - dist, cPoint[1]), (cPoint[0] + dist, cPoint[1]) weekdayFrequency = Op.operationRangeOmp(zoneOmap, point1, point2, cir_fun, MakeMapFormat(3, ints=True)) weekdayListAndTotal = Op.operationSetMap(weekdayFrequency, Aux.makeListAndTotalMp, MakeListFormat()) weekdayFromIntToStr(weekdayListAndTotal['list']) return weekdayListAndTotal
def severityFrequencyListInRgHours(timeOmap, time1, time2): """ Para un rango de horas devuelve una lista de la cantidad de accidentes por severidad y el total de accidentes Args: timeOmap: Order map organizado por horas time1: time de la hora 1 time2: time de la hora 2 Returns: Entry con la lista y el total """ frequency_fun = Aux.frequencyInMapForOmp('SeverityIndex') severityFrequency = Op.operationRangeOmp(timeOmap, time1, time2, frequency_fun, MakeMapFormat(2, ints=True)) severityListAndTotal = Op.operationSetMap(severityFrequency, Aux.makeListAndTotalMp, MakeListFormat()) AddPercents(severityListAndTotal) return severityListAndTotal
def mstFreqSeverityInRgDates(dateOmap, date1, date2): """ Para un rango de fechas calcula la severidad mas frecuente y el total de accidentes Args: dateOmap: Order map organizado por fechas date1: datetime de la fecha de la primera fecha date2: datetime de la fecha de la segunda fecha Returns: entry con la fecha el numero de accidentes en esa fecha, y total """ frequency_fun = Aux.frequencyInMapForOmp('SeverityIndex') severityFrequency = Op.operationRangeOmp(dateOmap, date1, date2, frequency_fun, MakeMapFormat(2, ints=True)) mstFreqSeverity = Op.operationSetMap(severityFrequency, Aux.TotalAndFrequentMp, MakeMaxFormat(True)) return mstFreqSeverity