Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
import pandas as pd
|
| 2 |
+
import gradio as gr
|
| 3 |
+
|
| 4 |
+
# Função para avaliação de gordura corporal
|
| 5 |
+
def imc(nome, idade, avaliador, confea,
|
| 6 |
+
peso, altura, peso_alvo, perc_g_alvo,
|
| 7 |
+
pantur_d, coxa_d, braço_d,
|
| 8 |
+
pantur_e, coxa_e, braço_e,
|
| 9 |
+
quadril, abdomem, cintura, tórax,
|
| 10 |
+
d_tríceps, d_peito, d_sub_axilar, d_subescapular, d_abdominal, d_supra_ilíaca, d_coxa,
|
| 11 |
+
a_flex, a_post, conc):
|
| 12 |
+
|
| 13 |
+
# Converter os valores para float
|
| 14 |
+
peso = float(peso)
|
| 15 |
+
altura = float(altura)
|
| 16 |
+
peso_alvo = float(peso_alvo)
|
| 17 |
+
perc_g_alvo = float(perc_g_alvo)
|
| 18 |
+
pantur_d = float(pantur_d)
|
| 19 |
+
coxa_d = float(coxa_d)
|
| 20 |
+
braço_d = float(braço_d)
|
| 21 |
+
pantur_e = float(pantur_e)
|
| 22 |
+
coxa_e = float(coxa_e)
|
| 23 |
+
braço_e = float(braço_e)
|
| 24 |
+
quadril = float(quadril)
|
| 25 |
+
abdomem = float(abdomem)
|
| 26 |
+
cintura = float(cintura)
|
| 27 |
+
tórax = float(tórax)
|
| 28 |
+
|
| 29 |
+
# Converter os valores de dobras cutâneas para inteiros
|
| 30 |
+
d_tríceps = int(d_tríceps)
|
| 31 |
+
d_peito = int(d_peito)
|
| 32 |
+
d_sub_axilar = int(d_sub_axilar)
|
| 33 |
+
d_subescapular = int(d_subescapular)
|
| 34 |
+
d_abdominal = int(d_abdominal)
|
| 35 |
+
d_supra_ilíaca = int(d_supra_ilíaca)
|
| 36 |
+
d_coxa = int(d_coxa)
|
| 37 |
+
|
| 38 |
+
# Índice de massa corporal
|
| 39 |
+
imc = peso * 10000 / (altura * altura)
|
| 40 |
+
|
| 41 |
+
# Índice de massa corporal
|
| 42 |
+
imc_alvo = peso_alvo * 10000 / (altura * altura)
|
| 43 |
+
|
| 44 |
+
# Soma das dobras
|
| 45 |
+
soma_dob = d_tríceps + d_peito + d_sub_axilar + d_subescapular + d_abdominal + d_supra_ilíaca + d_coxa
|
| 46 |
+
|
| 47 |
+
# Percentual de gordura
|
| 48 |
+
perc_g = (495 / (1.10938 - (0.0008267 * soma_dob) + (0.0000016 * soma_dob * soma_dob) - (0.0002574 * idade))) - 450
|
| 49 |
+
|
| 50 |
+
# Peso gordo e peso magro
|
| 51 |
+
peso_g = peso * (perc_g / 100)
|
| 52 |
+
peso_m = peso - peso_g
|
| 53 |
+
|
| 54 |
+
# Gasto calórico basal
|
| 55 |
+
gcb = 66 + (13.7 * peso) + (5 * altura) - (6.9 * idade)
|
| 56 |
+
|
| 57 |
+
# Ingesta calórica de equilíbrio
|
| 58 |
+
ice = (gcb * 0.2) + gcb
|
| 59 |
+
|
| 60 |
+
#
|
| 61 |
+
obs ="Os cálculos deste laudo baseiam-se em fórmulas contidas em: Foss,ML e Keteyian,SJ. FOX-Bases fisiológicas do exercício e do esporte. 6a Ed., 2000."
|
| 62 |
+
|
| 63 |
+
|
| 64 |
+
# criação de strings para os relatórios da interface e do pdf
|
| 65 |
+
|
| 66 |
+
Informações_resultados = f"""
|
| 67 |
+
Informações_gerais
|
| 68 |
+
Nome: {nome}
|
| 69 |
+
Idade: {idade}
|
| 70 |
+
Avaliador: {avaliador}
|
| 71 |
+
Nº Registro: {confea}
|
| 72 |
+
|
| 73 |
+
Controle_biométrico
|
| 74 |
+
Peso (kg): {peso:.2f}
|
| 75 |
+
Altura (cm): {altura:.2f}
|
| 76 |
+
IMC: {imc:.2f}
|
| 77 |
+
Soma das dobras (mm): {soma_dob}
|
| 78 |
+
Percentual de gordura (%): {perc_g:.2f}
|
| 79 |
+
Peso gordo (kg): {peso_g:.2f}
|
| 80 |
+
Peso magro (kg): {peso_m:.2f}
|
| 81 |
+
|
| 82 |
+
> Objetivos:
|
| 83 |
+
Peso alvo (kg): {peso_alvo:.2f}
|
| 84 |
+
Percentual de gordura alvo (%): {perc_g_alvo:.2f}
|
| 85 |
+
IMC alvo: {imc_alvo:.2f}
|
| 86 |
+
|
| 87 |
+
Avaliação de flexibilidade (sit-and-reach): {a_flex}
|
| 88 |
+
|
| 89 |
+
Avaliação postural: {a_post}
|
| 90 |
+
|
| 91 |
+
Gasto calórico basal: {gcb:.2f}
|
| 92 |
+
|
| 93 |
+
Ingesta calórica de equilíbrio: {ice:.2f}
|
| 94 |
+
"""
|
| 95 |
+
Conclusão = f"""
|
| 96 |
+
Conclusão da avaliação: {conc}
|
| 97 |
+
Obs: {obs}
|
| 98 |
+
"""
|
| 99 |
+
|
| 100 |
+
# OUTPUTS
|
| 101 |
+
return (
|
| 102 |
+
Informações_resultados,
|
| 103 |
+
Conclusão,
|
| 104 |
+
)
|
| 105 |
+
|
| 106 |
+
# Interface Gradio
|
| 107 |
+
with gr.Blocks(theme=gr.themes.Base()) as interface:
|
| 108 |
+
with gr.Tab("IMC"):
|
| 109 |
+
with gr.Row():
|
| 110 |
+
with gr.Column():
|
| 111 |
+
with gr.Row():
|
| 112 |
+
nome = gr.Textbox(label="Nome", scale=2)
|
| 113 |
+
idade = gr.Number(label="Idade", value=42, scale=0.5)
|
| 114 |
+
with gr.Row():
|
| 115 |
+
avaliador = gr.Textbox(label="Avaliador físico", value="Mariana Casa Nova")
|
| 116 |
+
confea = gr.Textbox(label="Registro conselho", value="-")
|
| 117 |
+
# Controle biométrico
|
| 118 |
+
with gr.Group():
|
| 119 |
+
with gr.Row():
|
| 120 |
+
peso = gr.Slider(0, 150, label="Peso (kg)", value=92.8, step=0.1)
|
| 121 |
+
altura = gr.Slider(100, 210, label="Altura (cm)", value=161, step=1)
|
| 122 |
+
with gr.Row():
|
| 123 |
+
peso_alvo = gr.Slider(0, 150, label="Peso alvo (kg)", value=70, step=0.1)
|
| 124 |
+
perc_g_alvo = gr.Slider(0, 100, label="% gordura alvo", value=28, step=0.1)
|
| 125 |
+
|
| 126 |
+
# Perímetros
|
| 127 |
+
with gr.Group():
|
| 128 |
+
with gr.Row():
|
| 129 |
+
pantur_d = gr.Slider(0, 100, label="Panturrilha direita (cm)", value=0, step=0.1)
|
| 130 |
+
pantur_e = gr.Slider(0, 100, label="Panturrilha esquerda (cm)", value=0, step=0.1)
|
| 131 |
+
with gr.Row():
|
| 132 |
+
coxa_e = gr.Slider(0, 100, label="Coxa esquerda (cm)", value=0, step=0.1)
|
| 133 |
+
coxa_d = gr.Slider(0, 100, label="Coxa direita (cm)", value=0, step=0.1)
|
| 134 |
+
with gr.Row():
|
| 135 |
+
braço_d = gr.Slider(0, 100, label="Braço direito (cm)", value=0, step=0.1)
|
| 136 |
+
braço_e = gr.Slider(0, 100, label="Braço esquerdo (cm)", value=0, step=0.1)
|
| 137 |
+
with gr.Row():
|
| 138 |
+
quadril = gr.Slider(0, 200, label="Quadril (cm)", value=0, step=0.1)
|
| 139 |
+
cintura = gr.Slider(0, 200, label="Cintura (cm)", value=0, step=0.1)
|
| 140 |
+
with gr.Row():
|
| 141 |
+
abdomem = gr.Slider(0, 200, label="Abdômen (cm)", value=0, step=0.1)
|
| 142 |
+
tórax = gr.Slider(0, 200, label="Tórax (cm)", value=0, step=0.1)
|
| 143 |
+
|
| 144 |
+
# Dobras cutâneas
|
| 145 |
+
with gr.Group():
|
| 146 |
+
with gr.Row():
|
| 147 |
+
d_tríceps = gr.Slider(0, 100, label="Tríceps (mm)", value=36, step=1)
|
| 148 |
+
d_peito = gr.Slider(0, 100, label="Peito", value=0, step=1)
|
| 149 |
+
with gr.Row():
|
| 150 |
+
d_sub_axilar = gr.Slider(0, 100, label="Sub-axilar (mm)", value=0, step=1)
|
| 151 |
+
d_subescapular = gr.Slider(0, 100, label="Subescapular (mm)", value=0, step=1)
|
| 152 |
+
with gr.Row():
|
| 153 |
+
d_abdominal = gr.Slider(0, 100, label="Abdominal (mm)", value=0, step=1)
|
| 154 |
+
d_supra_ilíaca = gr.Slider(0, 100, label="Supra-ilíaca (mm)", value=31, step=1)
|
| 155 |
+
with gr.Row():
|
| 156 |
+
d_coxa = gr.Slider(0, 100, label="Coxa (mm)", value=53, step=1)
|
| 157 |
+
|
| 158 |
+
# Avaliações
|
| 159 |
+
with gr.Group():
|
| 160 |
+
with gr.Row():
|
| 161 |
+
# Avaliação de flexibilidade
|
| 162 |
+
a_flex = gr.Radio(["Realizado", "Não realizado"], label="Avaliação de flexibilidade", value="Não realizado")
|
| 163 |
+
# Avaliação postural
|
| 164 |
+
a_post = gr.Radio(["Realizado", "Não realizado"], label="Avaliação postural", value="Não realizado")
|
| 165 |
+
# Conclusão
|
| 166 |
+
with gr.Group():
|
| 167 |
+
conc = gr.Textbox(label ="Conclusão da avaliação")
|
| 168 |
+
|
| 169 |
+
|
| 170 |
+
button_1 = gr.Button("Calcular")
|
| 171 |
+
|
| 172 |
+
with gr.Column():
|
| 173 |
+
Informações_resultados = gr.Textbox(label="Informações e resultados")
|
| 174 |
+
Conclusão = gr.Textbox(label="Conclusão da avaliação")
|
| 175 |
+
|
| 176 |
+
|
| 177 |
+
inputs = [
|
| 178 |
+
nome, idade, avaliador, confea,
|
| 179 |
+
peso, altura, peso_alvo, perc_g_alvo,
|
| 180 |
+
pantur_d, coxa_d, braço_d,
|
| 181 |
+
pantur_e, coxa_e, braço_e,
|
| 182 |
+
quadril, abdomem, cintura, tórax,
|
| 183 |
+
d_tríceps, d_peito, d_sub_axilar, d_subescapular, d_abdominal, d_supra_ilíaca, d_coxa,
|
| 184 |
+
a_flex, a_post, conc
|
| 185 |
+
]
|
| 186 |
+
|
| 187 |
+
outputs = [
|
| 188 |
+
Informações_resultados,
|
| 189 |
+
Conclusão,
|
| 190 |
+
]
|
| 191 |
+
|
| 192 |
+
button_1.click(imc, inputs=inputs, outputs=outputs)
|
| 193 |
+
|
| 194 |
+
if __name__ == "__main__":
|
| 195 |
+
interface.launch(debug=True)
|