versión con datos solo de las "fuentes primarias" y por etapas

se muestran solo las fuentes: comidas, glucómetro, reloj, microbiota y
visitas

se muestran valores dentro de las etapas de los participantes. si un
participante tiene etapas no definidas, entonces los conteos de sus
mediciones no se mostrarán en esas etapas (tendrán valor 0).

no se muestran asociaciones entre las comidas y las mediciones, solo
son conteos de los datos existentes.
parent 95cb5e3a
...@@ -13,10 +13,12 @@ Etapas_e = 3 ...@@ -13,10 +13,12 @@ Etapas_e = 3
Comidas_E1_e = 42 Comidas_E1_e = 42
Comidas_E2_e = 9 Comidas_E2_e = 9
Comidas_E3_e = 9 Comidas_E3_e = 9
Comidas_totales_e = Comidas_E1_e + Comidas_E2_e + Comidas_E3_e #Comidas_totales_e = Comidas_E1_e + Comidas_E2_e + Comidas_E3_e
Glucometro_e = 42 Comidas_totales_e = 42
Glucometro_e = 14
Total_pacientes = len(data.index) Total_pacientes = len(data.index)
Total_incluidos = (data["incluido"] == 1 ).sum()
data = data.query("incluido == 1")
scat = px.scatter(data, x="Days_glucose", y="Selectedfoods",size="medibles") scat = px.scatter(data, x="Days_glucose", y="Selectedfoods",size="medibles")
external_stylesheets = [ external_stylesheets = [
{ {
...@@ -40,10 +42,17 @@ app.layout = html.Div( ...@@ -40,10 +42,17 @@ app.layout = html.Div(
), ),
html.P( html.P(
children=( children=(
"Recuento de los datos asociados a " + str(len(data.index)) + " participantes " str(len(data.index)) + " participantes. "
),
className="header-description",
),
html.P(
children=(
str(Total_incluidos) + " están incluidos en el análisis. "
), ),
className="header-description", className="header-description",
), ),
], ],
className="header", className="header",
), ),
...@@ -55,7 +64,7 @@ app.layout = html.Div( ...@@ -55,7 +64,7 @@ app.layout = html.Div(
{"label":1, "value":1}, {"label":1, "value":1},
{"label":2, "value":2}, {"label":2, "value":2},
{"label":3, "value":3}, {"label":3, "value":3},
{"label":"Global", "value":99} #{"label":"Global", "value":99}
], ],
# options=[ # options=[
# { # {
...@@ -64,7 +73,7 @@ app.layout = html.Div( ...@@ -64,7 +73,7 @@ app.layout = html.Div(
# } # }
# for etapa in [1,2,3] # for etapa in [1,2,3]
# ], # ],
value=99, value=1,
clearable=False, clearable=False,
searchable=False, searchable=False,
className="dropdown", className="dropdown",
...@@ -73,13 +82,13 @@ app.layout = html.Div( ...@@ -73,13 +82,13 @@ app.layout = html.Div(
), ),
html.Div(children=[ html.Div(children=[
html.Div(children=[ html.Div(children=[
"Selectedfoods", "Comidas",
dcc.Slider( dcc.Slider(
id="min_comida", id="min_comidas",
min=1, min=1,
max=Comidas_totales_e, max=Comidas_totales_e,
value=Comidas_totales_e, value=Comidas_totales_e,
marks={1:"1",10:"10", 42:"42", Comidas_totales_e:str(Comidas_totales_e)} marks={1:"1",12:"15", 21:"21",30:"30",42:"42", Comidas_totales_e:str(Comidas_totales_e)}
), ),
"Dias con Glucómetro", "Dias con Glucómetro",
dcc.Slider( dcc.Slider(
...@@ -87,15 +96,15 @@ app.layout = html.Div( ...@@ -87,15 +96,15 @@ app.layout = html.Div(
min=1, min=1,
max=Glucometro_e, max=Glucometro_e,
value=Glucometro_e, value=Glucometro_e,
marks={1:"1", 14:"14", 28:"28", 42:"+42"} marks={1:"1", 7:"7", 14:"14", 28:"28", 42:"+42"}
), ),
"AUCs", "Dias con reloj",
dcc.Slider( dcc.Slider(
id="min_aucs", id="min_reloj",
min=1, min=1,
max=Comidas_totales_e, max=Glucometro_e,
value=Comidas_totales_e, value=Glucometro_e,
marks={1:"1", 10:"10", 42:"42", Comidas_totales_e:str(Comidas_totales_e)} marks={1:"1", 7:"7", 14:"14", 28:"28", 42:"+42"}
), ),
"Microbiota", "Microbiota",
dcc.Slider( dcc.Slider(
...@@ -166,36 +175,69 @@ app.layout = html.Div( ...@@ -166,36 +175,69 @@ app.layout = html.Div(
@app.callback( @app.callback(
Output("multi-chart", "figure"), Output("multi-chart", "figure"),
Input("etapaSel", "value"), Input("etapaSel", "value"),
Input("min_comida", "value"), Input("min_comidas", "value"),
Input("min_glucosa", "value"), Input("min_glucosa", "value"),
Input("min_aucs", "value"), Input("min_reloj", "value"),
Input("min_microbiota", "value"), Input("min_microbiota", "value"),
Input("min_fismet", "value"),
Input("min_qs", "value"),
Input("min_visitas", "value"), Input("min_visitas", "value"),
) )
def update_charts(etapaSel,min_comida, min_glucosa, min_aucs, min_microbiota, min_fismet,min_qs, min_visitas): def update_charts(etapaSel,min_comidas, min_glucosa, min_reloj, min_microbiota, min_visitas):
total_data = len(data.index) total_data = len(data.index)
gauges = { gauges = {
'shape': "bullet", 'shape': "bullet",
'axis': {'range': [None, 100]}, 'axis': {'range': [None, 100]},
'steps': [ 'steps': [
{'range': [0, 25], 'color': "red"}, {'range': [0, 25], 'color': "lightcyan"},
{'range': [25, 75], 'color': "yellow"}, {'range': [25, 50], 'color': "lightblue"},
{'range': [75, 100], 'color': "green"}], {'range': [50, 75], 'color': "skyblue"},
{'range': [75, 100], 'color': "steelblue"}],
'bar': {'color': "blue"}, 'bar': {'color': "blue"},
} }
numbers = { 'suffix':'%', 'valueformat':'d'} numbers = { 'suffix':'%', 'valueformat':'d'}
modes = "number+gauge" modes = "number+gauge"
comidas_data = pd.DataFrame()
glucosa_data = pd.DataFrame()
relojes_data = pd.DataFrame()
microbiota_data = pd.DataFrame()
fismet_data = pd.DataFrame()
qs_data = pd.DataFrame()
visitas_data = pd.DataFrame()
if etapaSel == 1:
visitas_data = data.loc[data["visita1"] != "0"]
microbiota_data = data.loc[data["MV1"] != 0]
glucosa_data = data.query("glucosa_e1 >= @min_glucosa")
comidas_data = data.query("Comidas_FoodsE1 >= @min_comidas")
reloj_data = data.query("pasos_e1 >= @min_reloj")
if etapaSel == 2:
visitas_data = data.loc[data["visita2"] != "0"]
microbiota_data = data.loc[data["MV2"] != 0]
glucosa_data = data.query("glucosa_e2 >= @min_glucosa")
comidas_data = data.query("Comidas_FoodsE2 >= @min_comidas")
reloj_data = data.query("pasos_e2 >= @min_reloj")
if etapaSel == 3:
visitas_data = data.loc[data["visita3"] != "0"]
microbiota_data = data.loc[data["MV3"] != 0]
glucosa_data = data.query("glucosa_e3 >= @min_glucosa")
comidas_data = data.query("Comidas_FoodsE3 >= @min_comidas")
reloj_data = data.query("pasos_e3 >= @min_reloj")
if etapaSel == 99:
comidas_data = data.query("Selectedfoods >= @min_comidas")
glucosa_data = data.query("Days_glucose >= @min_glucosa")
reloj_data = data.query("pasos_e3 >= @min_reloj")
microbiota_data = data.query("MT >= @min_microbiota")
visitas_data = data.query("Nvisitas >= @min_visitas")
multi = go.Figure() multi = go.Figure()
comidas_data = data.query("Selectedfoods >= @min_comida")
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * len(comidas_data.index) / Total_pacientes, value = 100 * len(comidas_data.index) / Total_incluidos,
domain = {'x': [0.25, 1], 'y': [0.90, 1]}, domain = {'x': [0.25, 1], 'y': [0.90, 1]},
title = {'text': "Comidas"}, title = {'text': "Comidas"},
mode = modes, mode = modes,
...@@ -213,73 +255,32 @@ def update_charts(etapaSel,min_comida, min_glucosa, min_aucs, min_microbiota, mi ...@@ -213,73 +255,32 @@ def update_charts(etapaSel,min_comida, min_glucosa, min_aucs, min_microbiota, mi
gauge = gauges gauge = gauges
)) ))
if etapaSel == 1:
medibles_data = data.query("FoodsE1 >= @min_aucs")
if etapaSel == 2:
medibles_data = data.query("FoodsE2 >= @min_aucs")
if etapaSel == 3:
medibles_data = data.query("FoodsE3 >= @min_aucs")
if etapaSel == 99:
medibles_data = data.query("medibles >= @min_aucs")
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * len(medibles_data.index) / Total_pacientes, value = 100 * len(reloj_data.index) / Total_incluidos,
domain = {'x': [0.25, 1], 'y': [0.7, 0.8]}, domain = {'x': [0.25, 1], 'y': [0.7, 0.8]},
title = {'text': "AUCs"},
mode = modes,
number = numbers,
gauge = gauges
))
relojes_data = data.query("ConPasos > 0")
multi.add_trace(go.Indicator(
value = 100 * len(relojes_data.index) / Total_pacientes,
domain = {'x': [0.25, 1], 'y': [0.6, 0.7]},
title = {'text': "Reloj"}, title = {'text': "Reloj"},
mode = modes, mode = modes,
number = numbers, number = numbers,
gauge = gauges gauge = gauges
)) ))
microbiota_data = data.query("MT >= @min_microbiota")
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * len(microbiota_data.index) / Total_pacientes, value = 100 * len(microbiota_data.index) / Total_incluidos,
# value = min_microbiota, # value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.5, 0.6]}, domain = {'x': [0.25, 1], 'y': [0.6, 0.7]},
title = {'text': "Microbiota"}, title = {'text': "Microbiota"},
mode = modes, mode = modes,
number = numbers, number = numbers,
gauge = gauges gauge = gauges
)) ))
fismet_data = data.query("FISMET >= @min_fismet")
multi.add_trace(go.Indicator(
value = 100 * len(fismet_data.index) / Total_pacientes,
# value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.4, 0.5]},
title = {'text': "Fisiomet"},
mode = modes,
number = numbers,
gauge = gauges
))
qs_data = data.query("QS >= @min_qs")
multi.add_trace(go.Indicator(
value = 100 * len(qs_data.index) / Total_pacientes,
# value = min_microbiota,
domain = {'x': [0.25, 1], 'y': [0.3, 0.4]},
title = {'text': "QS"},
mode = modes,
number = numbers,
gauge = gauges
))
visitas_data = data.query("Nvisitas >= @min_visitas")
multi.add_trace(go.Indicator( multi.add_trace(go.Indicator(
value = 100 * len(visitas_data.index) / Total_pacientes, value = 100 * len(visitas_data.index) / Total_incluidos,
domain = {'x': [0.25, 1], 'y':[0.1, 0.2]}, domain = {'x': [0.25, 1], 'y':[0.5, 0.6]},
title = {'text': "Visitas"}, title = {'text': "Visitas"},
mode = modes, mode = modes,
number = numbers, number = numbers,
......
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