cambio en la forma en que se calculan los gauges

ya no se utiliza la información del archivo sino de lo que se lee
desde CH.

además, se quitaron los ifs y se sustituyeron por simples f'strings.

también se reformuló la forma de calcular la base del pct. antes, era
con respecto a todos los incluidos en el análisis, ahora es solo a los
que cumplieron la etapa respectiva ...
parent 46becd33
...@@ -58,6 +58,7 @@ visitas_datos = [ get_visit_data(visita) for visita in range(1, Visitas_e + 1)] ...@@ -58,6 +58,7 @@ visitas_datos = [ get_visit_data(visita) for visita in range(1, Visitas_e + 1)]
# la info de glucómetro y comidas viene de clickhouse_connect. # la info de glucómetro y comidas viene de clickhouse_connect.
comidas_df = test_ch_2_b.foods() comidas_df = test_ch_2_b.foods()
glucometro_df = test_ch_2_b.glucometros() glucometro_df = test_ch_2_b.glucometros()
resumen_comidas = comidas_df.groupby(["patient","etapas"]).count()["Source"]
data_o = ( data_o = (
pd.read_csv("inventario.csv") pd.read_csv("inventario.csv")
...@@ -69,7 +70,6 @@ data_o["Secuenciaciones"] = 0 ...@@ -69,7 +70,6 @@ data_o["Secuenciaciones"] = 0
Total_pacientes = len(data_o.index) Total_pacientes = len(data_o.index)
data = data_o.loc[data_o["incluido"]] data = data_o.loc[data_o["incluido"]]
Total_incluidos = len(data) Total_incluidos = len(data)
secuencias = visitas_datos[0][["id", "muestra"]] secuencias = visitas_datos[0][["id", "muestra"]]
secuencias.set_index("id", inplace=True) secuencias.set_index("id", inplace=True)
for visita in [1, 2, 3]: for visita in [1, 2, 3]:
...@@ -301,69 +301,29 @@ def update_gauges(etapaSel, min_comidas, min_glucosa): ...@@ -301,69 +301,29 @@ def update_gauges(etapaSel, min_comidas, min_glucosa):
numbers = { 'suffix':'%', 'valueformat':'.2f'} numbers = { 'suffix':'%', 'valueformat':'.2f'}
modes = "number+gauge" modes = "number+gauge"
comidas_data = pd.DataFrame() comidas_data = resumen_comidas.loc[(slice(None),f'e{etapaSel}')] > min_comidas
glucosa_data = pd.DataFrame() glucosa_data = glucometro_df.loc[glucometro_df["visit_id"] == etapaSel, "amount_of_days"] > min_glucosa
microbiota_data = pd.DataFrame() microbiota_data = visitas_datos[etapaSel-1]["muestra"].count()
fismet_data = pd.DataFrame() N_etapa = len(visitas_datos[etapaSel-1].index)
qs_data = pd.DataFrame()
visitas_data = pd.DataFrame()
if etapaSel == 1:
visitas_data = data.loc[data["visita1"].notna()]
glucosa_data = data.query("NDias_glucosa_e1 >= @min_glucosa")
comidas_data = data.query("Comidas_e1 >= @min_comidas")
if etapaSel == 2:
visitas_data = data.loc[data["visita2"].notna()]
glucosa_data = data.query("NDias_glucosa_e2 >= @min_glucosa")
comidas_data = data.query("Comidas_e2 >= @min_comidas")
if etapaSel == 3:
visitas_data = data.loc[data["visita3"].notna()]
glucosa_data = data.query("NDias_glucosa_e3 >= @min_glucosa")
comidas_data = data.query("Comidas_e3 >= @min_comidas")
if etapaSel == 99:
comidas_data = data.query("Selectedfoods >= @min_comidas")
glucosa_data = data.query("NDias_glucosa >= @min_glucosa")
visitas_data = data.query("Nvisitas >= 4")
# el API regresa en los datos de visitas dos campos que se llaman patient_visit_id
# uno está en el nivel más externo de la respuestas, y es desechado en la función get_visit_data
# el otro está en un segundo nivel, dentro de la estructura "sample" y sube al primer nivel
# mediante la función json_normalize y después el rename lo convierte en un simple patient_visit_id.
# La razón por la que se desecha el dato del nivel exterior y se conserva el interior es
# que todos los pacientes tienen el primero pero solo los que se hicieron muestra para microbiota tienen el segundo.
microbiota_data = visitas_datos[etapaSel-1]["patient_visit_id"].count()
multi = go.Figure() multi = go.Figure()
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * len(comidas_data.index) / Total_incluidos, value = 100 * comidas_data.sum() / N_etapa,
domain = {'x': [0.25, 1], 'y': [0.60, 0.7]}, domain = {'x': [0.25, 1], 'y': [0.60, 0.7]},
title = {'text': "Comidas"}, title = {'text': "Comidas"},
mode = modes, mode = modes,
number = numbers, number = numbers,
gauge = gauges, gauge = gauges,
)) ))
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * len(glucosa_data.index) / Total_incluidos, value = 100 * glucosa_data.sum() / N_etapa,
domain = {'x': [0.25, 1], 'y': [0.8, 0.9]}, domain = {'x': [0.25, 1], 'y': [0.8, 0.9]},
title = {'text': "Glucómetro"}, title = {'text': "Glucómetro"},
mode = modes, mode = modes,
number = numbers, number = numbers,
gauge = gauges gauge = gauges
)) ))
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * microbiota_data / Total_incluidos, value = 100 * microbiota_data / N_etapa,
# value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.5, 0.6]}, domain = {'x': [0.25, 1], 'y': [0.5, 0.6]},
title = {'text': "Microbiota"}, title = {'text': "Microbiota"},
mode = modes, mode = modes,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment