def get_counter(id): try: lista = personas_genotipo[id].diccionario_genes counter = [Counter(lista[i]) for i in lista] return counter except errores.NotFound("El id no es válido"): pass
def pariente_de(grado, id): #En vez de listas hacerlos generadores try: if grado == -1: primos = [feno_final[i].nombre + " " + feno_final[i].apellido for i in range(len(feno_final)) if par_neg(id, i) == True and i != id] return primos if grado == 0: geno_igual = [feno_final[i].nombre + " " + feno_final[i].apellido for i in range(len(feno_final)) if par_0(id,i) == True and i != id] return geno_igual if grado == 1: geno_parecido1 = [feno_final[i].nombre + " " + feno_final[i].apellido for i in range(len(feno_final)) if i != id and par_1(id,i) == True] return geno_parecido1 if grado == 2: geno_parecido2 = [feno_final[i].nombre + " " + feno_final[i].apellido for i in range(len(feno_final)) if par_2(id,i) == True and i != id] return geno_parecido2 if grado == 'n': geno_parecidon = [feno_final[i].nombre + " " + feno_final[i].apellido for i in range(len(feno_final)) if par_n(id,i) == True and i != id] return geno_parecidon except errores.NotFound("Atributos incorrectos para pedir los parientes de una persona"): pass
def prom(tag_caracteristica): car_x = tag_num(tag_caracteristica) if car_x == 0 or car_x == 5: gen = (float(solo_carac(i)[car_x]) for i in range(len(feno_final))) total = reduce(lambda x,y: x + y, gen) prom = total/len(feno_final) return prom else: raise errores.NotFound("No se puede sacar el promedio de esta caracteristica")
def id_getter(nombre_completo): try: n = nombre_completo.split(" ", 1) nombre = n[0] apellido = n[1] id = [feno_final[i].id for i in range(len(feno_final)) if feno_final[i].nombre == nombre and feno_final[i].apellido == apellido] return int(id[0]) except: errores.NotFound("No se encontró el nombre pedido")
def max(tag_caracteristica): try: car_x = tag_num(tag_caracteristica) if car_x == 0 or car_x == 5: lista = [float(solo_carac(i)[car_x]) for i in range(len(feno_final))] lista.sort() ; return lista[len(lista)-1] else: carac = (solo_carac(i)[car_x] for i in range(len(feno_final))) count = Counter(carac) maxi = count.most_common() ; return maxi[0][0] except errores.NotFound("El tag no existe"): pass
def min(tag_caracteristica): try: car_x = tag_num(tag_caracteristica) if car_x == 0 or car_x == 5: car = [float(solo_carac(i)[car_x]) for i in range(len(feno_final))] car.sort() ; return car[0] else: car = (solo_carac(i)[car_x] for i in range(len(feno_final))) count = Counter(car) mini = count.most_common()[:-len(count):-1] ; return mini[0][0] except errores.NotFound("El tag no existe"): pass
def valor_característica(tag_identificador, nombre_completo): # GTC, nombre try: id = id_getter(nombre_completo) except errores.NotFound("El nombre no es válido"): pass if tag_identificador == 'AAG': return feno_final[id].altura if tag_identificador == 'GTC': return feno_final[id].color_ojos if tag_identificador == 'GGA': return feno_final[id].color_pelo if tag_identificador == 'TCT': return feno_final[id].tono if tag_identificador == 'GTA': return feno_final[id].nariz if tag_identificador == 'CTC': return feno_final[id].pies if tag_identificador == 'CGA': return feno_final[id].vello if tag_identificador == 'TGG': return feno_final[id].guata if tag_identificador == 'TAG': return feno_final[id].vision