def vis8(sel_comuna): global queue while not queue[7]: sleep(0.1) csv_to_db(dbs) # Datos de la Cuarentena Seleccionada q_comuna = engine.execute("SELECT * from '{}' WHERE Nombre='{}';".format( qt, sel_comuna)).fetchone() cod_comuna = q_comuna['Código CUT Comuna'] _, _, pre_fechas, trans_fechas, tot_fechas, post_fechas = get_fechas( q_comuna) comunas = engine.execute( "SELECT Nombre from '{}' WHERE `Código CUT Comuna`='{}'".format( qt, cod_comuna)).fetchall() comunas = tuple([i[0] for i in comunas]) # Viajes donde la comuna es DESTINO if len(comunas) > 1: base_query = "SELECT Fecha, SUM(Viajes) from '{}' WHERE Destino IN {}".format( vd, comunas) + " AND Fecha >= '{}' AND FECHA <= '{}' GROUP BY Fecha" else: base_query = "SELECT Fecha, SUM(Viajes) from '{}' WHERE Destino='{}'".format( vd, comunas[0]) + " AND Fecha >= '{}' AND FECHA <= '{}' GROUP BY Fecha" viajes = engine.execute(base_query.format(pre_fechas[0], post_fechas[1])).fetchall() fechas = [string_to_date(i[0].split(" ")[0]) for i in viajes] if len(fechas) < 7: return redirect('/unavailable_data/8') viajes = [i[1] for i in viajes] viajes_suma = [sum(viajes[i - 7:i]) / 7 for i in range(7, len(viajes))] fechas = fechas[7:] pre_viajes_hacia, trans_viajes_hacia, tot_viajes_hacia, post_viajes_hacia = map( lambda x: [ viajes_suma[i] for i in range(len(fechas)) if fechas[i] >= x[0] and fechas[i] <= x[1] ], [pre_fechas, trans_fechas, tot_fechas, post_fechas]) pre_fechas, trans_fechas, tot_fechas, post_fechas = map( lambda x: [ fechas[i] for i in range(len(fechas)) if fechas[i] >= x[0] and fechas[i] <= x[1] ], [pre_fechas, trans_fechas, tot_fechas, post_fechas]) # Plot img = plot_common_graph(n=8, ylabel=vd + "(Destino, prom. 7 días)", pre_x=pre_fechas, trans_x=trans_fechas, tot_x=tot_fechas, post_x=post_fechas, pre_y=pre_viajes_hacia, trans_y=trans_viajes_hacia, tot_y=tot_viajes_hacia, post_y=post_viajes_hacia) queue[8] = True return send_file(img, mimetype='image/png')
def vis0(sel_comuna): global queue for i in range(len(queue)): queue[i] = False csv_to_db(dbs) # Datos de la Cuarentena Seleccionada q_comuna = engine.execute("SELECT * from '{}' WHERE Nombre='{}';".format( qt, sel_comuna)).fetchone() cod_comuna = q_comuna['Código CUT Comuna'] _, _, pre_fechas, trans_fechas, tot_fechas, post_fechas = get_fechas( q_comuna) dates = [ date_headers(ct, x, dbs) for x in [pre_fechas, trans_fechas, tot_fechas, post_fechas] ] pre_query, trans_query, tot_query, post_query = map( headers_to_col_query, dates) pre_fechas, trans_fechas, tot_fechas, post_fechas = map( lambda x: [string_to_date(i) for i in x], dates) base_query = "SELECT {} from '{}' WHERE `Codigo comuna`='{}'" pre_casos_totales = list( engine.execute(base_query.format( pre_query, ct, cod_comuna)).fetchone()) if len(pre_query) > 3 else [] trans_casos_totales = list( engine.execute(base_query.format( trans_query, ct, cod_comuna)).fetchone()) if len(trans_query) > 3 else [] tot_casos_totales = list( engine.execute(base_query.format( tot_query, ct, cod_comuna)).fetchone()) if len(tot_query) > 3 else [] post_casos_totales = list( engine.execute(base_query.format( post_query, ct, cod_comuna)).fetchone()) if len(post_query) > 3 else [] # Plot img = plot_common_graph(n=0, ylabel=ct, pre_x=pre_fechas, trans_x=trans_fechas, tot_x=tot_fechas, post_x=post_fechas, pre_y=pre_casos_totales, trans_y=trans_casos_totales, tot_y=tot_casos_totales, post_y=post_casos_totales) queue[0] = True return send_file(img, mimetype='image/png')
def vis5(sel_comuna): global queue while not queue[4]: sleep(0.1) csv_to_db(dbs) # Datos de la Cuarentena Seleccionada q_comuna = engine.execute("SELECT * from '{}' WHERE Nombre='{}';".format( qt, sel_comuna)).fetchone() cod_comuna = q_comuna['Código CUT Comuna'] _, _, pre_fechas, trans_fechas, tot_fechas, post_fechas = get_fechas( q_comuna) dates = [ SE_headers(cn, x, dbs) for x in [pre_fechas, trans_fechas, tot_fechas, post_fechas] ] pre_query, trans_query, tot_query, post_query = map( headers_to_col_query, dates) pre_fechas, trans_fechas, tot_fechas, post_fechas = map( lambda x: [SE_to_date(i) for i in dates[x]], range(4)) base_query = "SELECT {} from '{}' WHERE `Codigo comuna`='{}'" pre_casos_totales = list( engine.execute(base_query.format( pre_query, cn, cod_comuna)).fetchone()) if len(pre_query) > 3 else [] trans_casos_totales = list( engine.execute(base_query.format( trans_query, cn, cod_comuna)).fetchone()) if len(trans_query) > 3 else [] tot_casos_totales = list( engine.execute(base_query.format( tot_query, cn, cod_comuna)).fetchone()) if len(tot_query) > 3 else [] post_casos_totales = list( engine.execute(base_query.format( post_query, cn, cod_comuna)).fetchone()) if len(post_query) > 3 else [] # Plot img = plot_common_graph(n=5, ylabel=cn + " por 100k hab.", pre_x=pre_fechas, trans_x=trans_fechas, tot_x=tot_fechas, post_x=post_fechas, pre_y=pre_casos_totales, trans_y=trans_casos_totales, tot_y=tot_casos_totales, post_y=post_casos_totales) queue[5] = True return send_file(img, mimetype='image/png')
def vis6(sel_comuna): global queue while not queue[5]: sleep(0.1) csv_to_db(dbs) # Datos de la Cuarentena Seleccionada q_comuna = engine.execute("SELECT * from '{}' WHERE Nombre='{}';".format( qt, sel_comuna)).fetchone() cod_comuna = q_comuna['Código CUT Comuna'] # Fechas importantes a revisar dia_inicio = q_comuna['Fecha de Inicio'].split(" ")[0] dia_termino = q_comuna['Fecha de Término'].split(" ")[0] # Antes de la cuarentena pre_fecha_0 = string_to_date(dia_inicio) + timedelta(days=-21) pre_fecha_1 = string_to_date(dia_inicio) pre_fechas = (pre_fecha_0, pre_fecha_1) # Período de transición trans_fecha_0 = string_to_date(dia_inicio) trans_fecha_1 = string_to_date(dia_inicio) + timedelta(days=14) trans_fechas = (trans_fecha_0, trans_fecha_1) # Período de plena cuarentena tot_fecha_0 = string_to_date(dia_inicio) + timedelta(days=14) tot_fecha_1 = string_to_date(dia_termino) tot_fechas = (tot_fecha_0, tot_fecha_1) # Período de cuarentena efectiva post_fecha_0 = string_to_date(dia_termino) post_fecha_1 = string_to_date(dia_termino) + timedelta(days=7) post_fechas = (post_fecha_0, post_fecha_1) dates = [ date_headers(ct, x, dbs) for x in [pre_fechas, trans_fechas, tot_fechas, post_fechas] ] pre_query, trans_query, tot_query, post_query = map( headers_to_col_query, dates) pre_fechas, trans_fechas, tot_fechas, post_fechas = map( lambda x: [string_to_date(i) for i in x], dates) fechas = pre_fechas + trans_fechas + tot_fechas + post_fechas base_query = "SELECT {} from '{}' WHERE `Codigo comuna`='{}'" pre_casos_totales = list( engine.execute(base_query.format( pre_query, ct, cod_comuna)).fetchone()) if len(pre_query) > 3 else [] trans_casos_totales = list( engine.execute(base_query.format( trans_query, ct, cod_comuna)).fetchone()) if len(trans_query) > 3 else [] tot_casos_totales = list( engine.execute(base_query.format( tot_query, ct, cod_comuna)).fetchone()) if len(tot_query) > 3 else [] post_casos_totales = list( engine.execute(base_query.format( post_query, ct, cod_comuna)).fetchone()) if len(post_query) > 3 else [] casos = pre_casos_totales + trans_casos_totales + tot_casos_totales + post_casos_totales pre_final_fechas = [] pre_tpo_duplicacion = [] trans_final_fechas = [] trans_tpo_duplicacion = [] tot_final_fechas = [] tot_tpo_duplicacion = [] post_final_fechas = [] post_tpo_duplicacion = [] min_casos = casos[0] for i in range(len(casos)): curr_caso = casos[i] curr_fecha = fechas[i] if min_casos * 2 > curr_caso: continue for j in range(0, i): prev_caso = casos[j] prev_fecha = fechas[j] if prev_caso * 2 > curr_caso: if curr_fecha in pre_fechas: pre_final_fechas.append(curr_fecha) pre_tpo_duplicacion.append((curr_fecha - prev_fecha).days) if curr_fecha in trans_fechas: trans_final_fechas.append(curr_fecha) trans_tpo_duplicacion.append( (curr_fecha - prev_fecha).days) if curr_fecha in tot_fechas: tot_final_fechas.append(curr_fecha) tot_tpo_duplicacion.append((curr_fecha - prev_fecha).days) if curr_fecha in post_fechas: post_final_fechas.append(curr_fecha) post_tpo_duplicacion.append((curr_fecha - prev_fecha).days) break # Plot if len(pre_tpo_duplicacion + trans_tpo_duplicacion + tot_tpo_duplicacion + post_tpo_duplicacion) == 0: return redirect('/unavailable_data/6') img = plot_common_graph(n=6, ylabel="Tiempo de duplicación (días)", pre_x=pre_final_fechas, trans_x=trans_final_fechas, tot_x=tot_final_fechas, post_x=post_final_fechas, pre_y=pre_tpo_duplicacion, trans_y=trans_tpo_duplicacion, tot_y=tot_tpo_duplicacion, post_y=post_tpo_duplicacion) queue[6] = True return send_file(img, mimetype='image/png')
def vis3(sel_comuna): global queue while not queue[2]: sleep(0.1) csv_to_db(dbs) # Datos de la Cuarentena Seleccionada q_comuna = engine.execute("SELECT * from '{}' WHERE Nombre='{}';".format( qt, sel_comuna)).fetchone() cod_comuna = q_comuna['Código CUT Comuna'] _, _, pre_fechas, trans_fechas, tot_fechas, post_fechas = get_fechas( q_comuna) dates = [ date_headers(ca, x, dbs) for x in [pre_fechas, trans_fechas, tot_fechas, post_fechas] ] pre_query, trans_query, tot_query, post_query = map( headers_to_col_query, dates) pre_fechas, trans_fechas, tot_fechas, post_fechas = map( lambda x: [string_to_date(i) for i in x], dates) base_query = "SELECT {} from '{}' WHERE `Codigo comuna`='{}'" pre_casos_totales = list( engine.execute(base_query.format( pre_query, ca, cod_comuna)).fetchone()) if len(pre_query) > 3 else [] trans_casos_totales = list( engine.execute(base_query.format( trans_query, ca, cod_comuna)).fetchone()) if len(trans_query) > 3 else [] tot_casos_totales = list( engine.execute(base_query.format( tot_query, ca, cod_comuna)).fetchone()) if len(tot_query) > 3 else [] post_casos_totales = list( engine.execute(base_query.format( post_query, ca, cod_comuna)).fetchone()) if len(post_query) > 3 else [] # Población de la comuna poblacion = engine.execute( "SELECT Poblacion from '{}' WHERE `Codigo comuna`='{}'".format( ct, cod_comuna)).fetchone()[0] pre_casos_totales, trans_casos_totales, tot_casos_totales, post_casos_totales = map( lambda x: [100000 * i / poblacion for i in x], [ pre_casos_totales, trans_casos_totales, tot_casos_totales, post_casos_totales ]) # Plot img = plot_common_graph(n=3, ylabel=ca + " por 100k hab.", pre_x=pre_fechas, trans_x=trans_fechas, tot_x=tot_fechas, post_x=post_fechas, pre_y=pre_casos_totales, trans_y=trans_casos_totales, tot_y=tot_casos_totales, post_y=post_casos_totales) queue[3] = True return send_file(img, mimetype='image/png')