DHEIVER commited on
Commit
bcdc3a3
·
verified ·
1 Parent(s): 5dc4c33

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +281 -114
app.py CHANGED
@@ -5,93 +5,194 @@ from PIL import Image
5
  import io
6
  from collections import defaultdict
7
 
8
- def analisar_condicoes(regiao, dados):
9
- """
10
- Analisa e sumariza as condições encontradas para cada região
11
- """
12
- condicoes = defaultdict(int)
13
- for dado in dados:
14
- for linha in dado.split('\n'):
15
- if f'Região: {regiao}' in linha:
16
- if 'congestão/inflamação' in linha:
17
- condicoes['congestao_inflamacao'] += 1
18
- if 'deficiência/hipofunção' in linha:
19
- condicoes['deficiencia_hipofuncao'] += 1
20
- if 'atrofia/degeneração' in linha:
21
- condicoes['atrofia_degeneracao'] += 1
22
- if 'irritação/estresse' in linha:
23
- condicoes['irritacao_estresse'] += 1
24
- return condicoes
 
 
 
 
 
 
 
 
 
 
25
 
26
- def gerar_diagnostico(regiao, condicoes, total_ocorrencias):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
27
  """
28
- Gera um diagnóstico baseado na frequência das condições
29
  """
30
- diagnostico = []
31
- limiar = total_ocorrencias * 0.3 # 30% de ocorrências como limiar
 
 
 
 
 
 
 
32
 
33
- if condicoes['congestao_inflamacao'] > limiar:
34
- diagnostico.append("Processo inflamatório crônico")
35
- if condicoes['deficiencia_hipofuncao'] > limiar:
36
- diagnostico.append("Função reduzida ou comprometida")
37
- if condicoes['atrofia_degeneracao'] > limiar:
38
- diagnostico.append("Sinais de desgaste tecidual")
39
- if condicoes['irritacao_estresse'] > limiar:
40
- diagnostico.append("Sobrecarga funcional")
41
 
42
- return diagnostico
 
 
 
 
 
43
 
44
- def processar_analise_iridologica(dados_analise):
45
  """
46
- Processa os dados da análise iridológica e gera um relatório estruturado
47
  """
48
- # Identificar todas as regiões únicas
49
- regioes = set()
 
50
  for linha in dados_analise.split('\n'):
51
- if linha.startswith('Região: '):
52
- regiao = linha.split('Região: ')[1].strip()
53
- regioes.add(regiao)
 
 
 
 
 
54
 
55
- # Analisar cada região
56
- resultados = {}
57
- for regiao in regioes:
58
- condicoes = analisar_condicoes(regiao, [dados_analise])
59
- diagnostico = gerar_diagnostico(regiao, condicoes, len(dados_analise.split('\n')))
60
- if diagnostico:
61
- resultados[regiao] = diagnostico
62
 
63
- return resultados
64
 
65
- def gerar_recomendacoes(diagnostico):
66
  """
67
- Gera recomendações baseadas no diagnóstico
68
  """
69
- recomendacoes = {
70
- "Processo inflamatório crônico": [
71
- "Avaliação médica específica para a região",
72
- "Considerar anti-inflamatórios naturais",
73
- "Reduzir alimentos inflamatórios",
74
- "Aumentar consumo de água"
75
- ],
76
- "Função reduzida ou comprometida": [
77
- "Suplementação nutricional específica",
78
- "Avaliação de deficiências nutricionais",
79
- "Ajuste na dieta para suporte funcional",
80
- "Exercícios apropriados para estimulação"
81
- ],
82
- "Sinais de desgaste tecidual": [
83
- "Suporte nutricional para regeneração",
84
- "Redução de fatores estressantes",
85
- "Avaliação de minerais e vitaminas",
86
- "Considerar terapias regenerativas"
87
- ],
88
- "Sobrecarga funcional": [
89
- "Técnicas de gerenciamento de estresse",
90
- "Adequação do ritmo de atividades",
91
- "Suporte adaptogênico",
92
- "Melhoria da qualidade do sono"
93
- ]
94
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  return recomendacoes
96
 
97
  def criar_interface():
@@ -99,59 +200,115 @@ def criar_interface():
99
  Cria a interface do usuário com Gradio
100
  """
101
  def analisar(texto_analise):
102
- resultados = processar_analise_iridologica(texto_analise)
103
- recomendacoes = gerar_recomendacoes(resultados)
 
 
104
 
105
- # Formatar saída
106
- saida = "ANÁLISE IRIDOLÓGICA DETALHADA\n\n"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
 
108
- # Agrupar por sistemas
109
  sistemas = {
110
  "Sistema Nervoso": ["Cerebro", "Sistema Nervoso"],
111
- "Sistema Digestivo": ["Estomago", "Figado", "Vesicula", "Pancreas", "Sistema Digestivo",
112
- "Intestino Grosso", "Intestino Delgado", "Apendice"],
113
  "Sistema Circulatório": ["Coracao"],
114
- "Sistema Urinário": ["Rim Direito", "Rim Esquerdo", "Bexiga"],
115
- "Sistema Endócrino": ["Tireoide"],
116
  "Sistema Respiratório": ["Pulmao", "Bronquios"],
117
- "Sistema Reprodutor": ["Sistema Reprodutor"]
 
118
  }
119
 
120
  for sistema, orgaos in sistemas.items():
121
- saida += f"\n{sistema.upper()}:\n"
122
  encontrado = False
 
123
  for orgao in orgaos:
124
  if orgao in resultados:
125
  encontrado = True
126
  saida += f"\n• {orgao}:\n"
127
- for diagnostico in resultados[orgao]:
128
- saida += f" - {diagnostico}\n"
129
- if diagnostico in recomendacoes:
130
- saida += " Recomendações:\n"
131
- for rec in recomendacoes[diagnostico]:
132
- saida += f" * {rec}\n"
 
 
 
 
 
 
 
133
  if not encontrado:
134
  saida += " Sem alterações significativas\n"
135
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
136
  return saida
137
 
138
  # Interface
139
- with gr.Blocks(title="Análise Iridológica Avançada") as interface:
140
  gr.Markdown("""
141
- # Sistema de Análise Iridológica Avançada
142
- Este sistema analisa os dados iridológicos e fornece um relatório detalhado com recomendações.
143
  """)
144
 
145
  with gr.Tabs():
146
- with gr.Tab("Análise Completa"):
147
  input_text = gr.Textbox(
148
  label="Dados da Análise Iridológica",
149
  lines=10,
150
  placeholder="Cole os dados da análise aqui..."
151
  )
152
- analysis_btn = gr.Button("Analisar Dados", variant="primary")
153
  output_text = gr.Textbox(
154
- label="Relatório de Análise",
155
  lines=30
156
  )
157
 
@@ -163,33 +320,43 @@ def criar_interface():
163
 
164
  with gr.Tab("Informações"):
165
  gr.Markdown("""
166
- ## Sobre a Análise Iridológica Avançada
167
 
168
  Este sistema utiliza algoritmos avançados para:
169
 
170
- 1. Analisar padrões nas observações iridológicas
171
- 2. Identificar tendências e correlações
172
- 3. Gerar recomendações personalizadas
173
- 4. Agrupar resultados por sistemas corporais
174
 
175
- ### Interpretação dos Resultados
176
 
177
- O sistema considera quatro principais categorias de alterações:
 
 
 
 
178
 
179
- * Processos inflamatórios crônicos
180
- * Funções reduzidas ou comprometidas
181
- * Sinais de desgaste tecidual
182
- * Sobrecargas funcionais
183
 
184
- ### Observações Importantes
 
 
 
185
 
186
- * Os resultados são baseados em análise estatística das observações
187
- * As recomendações são gerais e devem ser personalizadas por profissional
188
- * Este é um sistema de suporte à decisão, não um diagnóstico definitivo
 
 
 
189
  """)
190
-
191
  return interface
192
 
193
- if __name__ == "__main__":
194
  interface = criar_interface()
195
- interface.launch(share=True)
 
 
 
 
5
  import io
6
  from collections import defaultdict
7
 
8
+ # Mapeamento de sinais iridológicos para condições de saúde com probabilidades
9
+ SINAIS_CONDICOES = {
10
+ "congestao_inflamacao": {
11
+ "Artrite": 0.75,
12
+ "Inflamação Crônica": 0.80,
13
+ "Processo Autoimune": 0.65,
14
+ "Alergias": 0.70
15
+ },
16
+ "deficiencia_hipofuncao": {
17
+ "Fadiga Crônica": 0.70,
18
+ "Deficiência Nutricional": 0.75,
19
+ "Hipotireoidismo": 0.65,
20
+ "Anemia": 0.60
21
+ },
22
+ "atrofia_degeneracao": {
23
+ "Osteoporose": 0.70,
24
+ "Degeneração Articular": 0.75,
25
+ "Problemas Circulatórios": 0.65,
26
+ "Disfunção Orgânica": 0.80
27
+ },
28
+ "irritacao_estresse": {
29
+ "Ansiedade": 0.80,
30
+ "Estresse Crônico": 0.85,
31
+ "Insônia": 0.70,
32
+ "Síndrome do Intestino Irritável": 0.65
33
+ }
34
+ }
35
 
36
+ # Correlações entre regiões e sistemas
37
+ CORRELACOES_SISTEMAS = {
38
+ "Cerebro": {
39
+ "Sistema Nervoso Central": 0.90,
40
+ "Cognição": 0.85,
41
+ "Equilíbrio Hormonal": 0.70
42
+ },
43
+ "Sistema Nervoso": {
44
+ "Função Neurológica": 0.85,
45
+ "Stress": 0.80,
46
+ "Sono": 0.75
47
+ },
48
+ "Pulmao": {
49
+ "Sistema Respiratório": 0.90,
50
+ "Oxigenação": 0.85,
51
+ "Alergias": 0.70
52
+ },
53
+ "Coracao": {
54
+ "Sistema Circulatório": 0.90,
55
+ "Pressão Arterial": 0.85,
56
+ "Energia Vital": 0.75
57
+ },
58
+ "Figado": {
59
+ "Desintoxicação": 0.90,
60
+ "Metabolismo": 0.85,
61
+ "Digestão": 0.80
62
+ },
63
+ "Estomago": {
64
+ "Digestão": 0.90,
65
+ "Absorção": 0.85,
66
+ "Acidez": 0.80
67
+ },
68
+ "Intestino": {
69
+ "Flora Intestinal": 0.85,
70
+ "Absorção": 0.80,
71
+ "Imunidade": 0.75
72
+ }
73
+ }
74
+
75
+ def calcular_probabilidade_doenca(sinais, regiao):
76
  """
77
+ Calcula a probabilidade de doenças baseada nos sinais e região
78
  """
79
+ probabilidades = defaultdict(float)
80
+ peso_base = 0.0
81
+
82
+ # Análise dos sinais
83
+ for sinal, condicoes in SINAIS_CONDICOES.items():
84
+ if sinal in sinais:
85
+ for condicao, prob in condicoes.items():
86
+ probabilidades[condicao] += prob
87
+ peso_base += 1
88
 
89
+ # Ajuste baseado nas correlações do sistema
90
+ if regiao in CORRELACOES_SISTEMAS:
91
+ for sistema, correlacao in CORRELACOES_SISTEMAS[regiao].items():
92
+ for condicao in probabilidades:
93
+ probabilidades[condicao] *= correlacao
 
 
 
94
 
95
+ # Normalização das probabilidades
96
+ if peso_base > 0:
97
+ for condicao in probabilidades:
98
+ probabilidades[condicao] = min(probabilidades[condicao] / peso_base, 1.0)
99
+
100
+ return dict(probabilidades)
101
 
102
+ def analisar_padroes_cronicos(dados_analise):
103
  """
104
+ Analisa padrões crônicos nos dados
105
  """
106
+ padroes = defaultdict(int)
107
+ total_observacoes = 0
108
+
109
  for linha in dados_analise.split('\n'):
110
+ if 'Região:' in linha:
111
+ total_observacoes += 1
112
+ if 'congestão/inflamação' in linha:
113
+ padroes['inflamacao_cronica'] += 1
114
+ if 'deficiência/hipofunção' in linha:
115
+ padroes['deficiencia_sistemica'] += 1
116
+ if 'atrofia/degeneração' in linha:
117
+ padroes['degeneracao_cronica'] += 1
118
 
119
+ # Calcula percentuais
120
+ if total_observacoes > 0:
121
+ for padrao in padroes:
122
+ padroes[padrao] = padroes[padrao] / total_observacoes
 
 
 
123
 
124
+ return dict(padroes)
125
 
126
+ def gerar_recomendacoes_avancadas(probabilidades, padroes_cronicos):
127
  """
128
+ Gera recomendações baseadas nas probabilidades e padrões crônicos
129
  """
130
+ recomendacoes = []
131
+
132
+ # Recomendações baseadas em probabilidades altas
133
+ for condicao, prob in probabilidades.items():
134
+ if prob > 0.7:
135
+ if "Artrite" in condicao or "Inflamação" in condicao:
136
+ recomendacoes.append({
137
+ "condição": condicao,
138
+ "probabilidade": f"{prob*100:.1f}%",
139
+ "exames_sugeridos": ["PCR", "VHS", "Anti-CCP"],
140
+ "especialidades": ["Reumatologia", "Clínica Médica"],
141
+ "abordagens_naturais": [
142
+ "Suplementação de Ômega 3",
143
+ "Curcumina",
144
+ "Exercícios de baixo impacto"
145
+ ]
146
+ })
147
+ elif "Fadiga" in condicao or "Deficiência" in condicao:
148
+ recomendacoes.append({
149
+ "condição": condicao,
150
+ "probabilidade": f"{prob*100:.1f}%",
151
+ "exames_sugeridos": ["Vitamina D", "B12", "Ferritina", "Hormônios tireoidianos"],
152
+ "especialidades": ["Endocrinologia", "Clínica Médica"],
153
+ "abordagens_naturais": [
154
+ "Adaptógenos",
155
+ "Vitaminas do complexo B",
156
+ "Gestão do estresse"
157
+ ]
158
+ })
159
+ elif "Ansiedade" in condicao or "Estresse" in condicao:
160
+ recomendacoes.append({
161
+ "condição": condicao,
162
+ "probabilidade": f"{prob*100:.1f}%",
163
+ "exames_sugeridos": ["Cortisol", "DHEA", "Neurotransmissores"],
164
+ "especialidades": ["Psiquiatria", "Psicologia"],
165
+ "abordagens_naturais": [
166
+ "Meditação",
167
+ "Magnésio",
168
+ "Terapias integrativas"
169
+ ]
170
+ })
171
+
172
+ # Ajustes baseados em padrões crônicos
173
+ for padrao, valor in padroes_cronicos.items():
174
+ if valor > 0.5:
175
+ if padrao == "inflamacao_cronica":
176
+ recomendacoes.append({
177
+ "padrão": "Inflamação Sistêmica",
178
+ "prevalência": f"{valor*100:.1f}%",
179
+ "abordagem_sistêmica": [
180
+ "Dieta anti-inflamatória",
181
+ "Probióticos",
182
+ "Moduladores imunológicos naturais"
183
+ ]
184
+ })
185
+ elif padrao == "deficiencia_sistemica":
186
+ recomendacoes.append({
187
+ "padrão": "Deficiência Nutricional Sistêmica",
188
+ "prevalência": f"{valor*100:.1f}%",
189
+ "abordagem_sistêmica": [
190
+ "Avaliação nutricional completa",
191
+ "Suplementação personalizada",
192
+ "Otimização da absorção intestinal"
193
+ ]
194
+ })
195
+
196
  return recomendacoes
197
 
198
  def criar_interface():
 
200
  Cria a interface do usuário com Gradio
201
  """
202
  def analisar(texto_analise):
203
+ # Processar cada região
204
+ resultados = defaultdict(list)
205
+ regiao_atual = None
206
+ sinais_atuais = []
207
 
208
+ for linha in texto_analise.split('\n'):
209
+ if 'Região:' in linha:
210
+ if regiao_atual and sinais_atuais:
211
+ prob = calcular_probabilidade_doenca(sinais_atuais, regiao_atual)
212
+ resultados[regiao_atual].append(prob)
213
+
214
+ regiao_atual = linha.split('Região:')[1].strip()
215
+ sinais_atuais = []
216
+
217
+ if regiao_atual:
218
+ if 'congestão/inflamação' in linha:
219
+ sinais_atuais.append('congestao_inflamacao')
220
+ if 'deficiência/hipofunção' in linha:
221
+ sinais_atuais.append('deficiencia_hipofuncao')
222
+ if 'atrofia/degeneração' in linha:
223
+ sinais_atuais.append('atrofia_degeneracao')
224
+ if 'irritação/estresse' in linha:
225
+ sinais_atuais.append('irritacao_estresse')
226
+
227
+ # Analisar padrões crônicos
228
+ padroes = analisar_padroes_cronicos(texto_analise)
229
+
230
+ # Gerar relatório
231
+ saida = "ANÁLISE PROBABILÍSTICA DE CONDIÇÕES DE SAÚDE\n\n"
232
 
233
+ # Agrupar por sistemas principais
234
  sistemas = {
235
  "Sistema Nervoso": ["Cerebro", "Sistema Nervoso"],
236
+ "Sistema Digestivo": ["Estomago", "Figado", "Vesicula", "Pancreas",
237
+ "Sistema Digestivo", "Intestino Grosso", "Intestino Delgado"],
238
  "Sistema Circulatório": ["Coracao"],
 
 
239
  "Sistema Respiratório": ["Pulmao", "Bronquios"],
240
+ "Sistema Endócrino": ["Tireoide"],
241
+ "Sistema Urinário": ["Rim Direito", "Rim Esquerdo", "Bexiga"]
242
  }
243
 
244
  for sistema, orgaos in sistemas.items():
245
+ saida += f"\n{sistema}:\n"
246
  encontrado = False
247
+
248
  for orgao in orgaos:
249
  if orgao in resultados:
250
  encontrado = True
251
  saida += f"\n• {orgao}:\n"
252
+
253
+ # Calcular média das probabilidades para o órgão
254
+ prob_medias = defaultdict(list)
255
+ for prob_dict in resultados[orgao]:
256
+ for cond, prob in prob_dict.items():
257
+ prob_medias[cond].append(prob)
258
+
259
+ # Mostrar apenas condições com probabilidade significativa
260
+ for cond, probs in prob_medias.items():
261
+ media = sum(probs) / len(probs)
262
+ if media > 0.5: # Mostrar apenas probabilidades > 50%
263
+ saida += f" - {cond}: {media*100:.1f}% de probabilidade\n"
264
+
265
  if not encontrado:
266
  saida += " Sem alterações significativas\n"
267
 
268
+ # Adicionar análise de padrões crônicos
269
+ saida += "\nPADRÕES CRÔNICOS IDENTIFICADOS:\n"
270
+ for padrao, valor in padroes.items():
271
+ if valor > 0.3: # Mostrar padrões com mais de 30% de prevalência
272
+ saida += f"• {padrao.replace('_', ' ').title()}: {valor*100:.1f}% de prevalência\n"
273
+
274
+ # Gerar e adicionar recomendações
275
+ recomendacoes = gerar_recomendacoes_avancadas(
276
+ {k: v for d in [prob for probs in resultados.values() for prob in probs]
277
+ for k, v in d.items()},
278
+ padroes
279
+ )
280
+
281
+ if recomendacoes:
282
+ saida += "\nRECOMENDAÇÕES BASEADAS NA ANÁLISE:\n"
283
+ for rec in recomendacoes:
284
+ if "condição" in rec:
285
+ saida += f"\n• {rec['condição']} ({rec['probabilidade']}):\n"
286
+ saida += f" Exames Sugeridos: {', '.join(rec['exames_sugeridos'])}\n"
287
+ saida += f" Especialidades: {', '.join(rec['especialidades'])}\n"
288
+ saida += f" Abordagens Naturais: {', '.join(rec['abordagens_naturais'])}\n"
289
+ elif "padrão" in rec:
290
+ saida += f"\n• {rec['padrão']} ({rec['prevalência']}):\n"
291
+ saida += f" Abordagem Sistêmica: {', '.join(rec['abordagem_sistêmica'])}\n"
292
+
293
  return saida
294
 
295
  # Interface
296
+ with gr.Blocks(title="Análise Iridológica Probabilística") as interface:
297
  gr.Markdown("""
298
+ # Sistema Avançado de Análise Iridológica Probabilística
299
+ Este sistema utiliza técnicas avançadas de iridologia para calcular probabilidades de condições de saúde.
300
  """)
301
 
302
  with gr.Tabs():
303
+ with gr.Tab("Análise Probabilística"):
304
  input_text = gr.Textbox(
305
  label="Dados da Análise Iridológica",
306
  lines=10,
307
  placeholder="Cole os dados da análise aqui..."
308
  )
309
+ analysis_btn = gr.Button("Analisar Probabilidades", variant="primary")
310
  output_text = gr.Textbox(
311
+ label="Relatório de Probabilidades",
312
  lines=30
313
  )
314
 
 
320
 
321
  with gr.Tab("Informações"):
322
  gr.Markdown("""
323
+ ## Sobre a Análise Probabilística
324
 
325
  Este sistema utiliza algoritmos avançados para:
326
 
327
+ 1. Calcular probabilidades de condições de saúde
328
+ 2. Identificar padrões crônicos
329
+ 3. Correlacionar sinais iridológicos
330
+ 4. Gerar recomendações personalizadas
331
 
332
+ ### Metodologia
333
 
334
+ O sistema analisa:
335
+ * Sinais específicos em cada região da íris
336
+ * Correlações entre diferentes regiões
337
+ * Padrões crônicos e agudos
338
+ * Intensidade e frequência dos sinais
339
 
340
+ ### Interpretação das Probabilidades
 
 
 
341
 
342
+ * >80%: Alta probabilidade
343
+ * 60-80%: Probabilidade moderada
344
+ * 40-60%: Probabilidade média
345
+ * <40%: Baixa probabilidade
346
 
347
+ ### Limitações
348
+
349
+ * As probabilidades são indicativas
350
+ * Necessária confirmação com exames clínicos
351
+ * Consulte profissionais especializados
352
+ * Resultados não substituem diagnóstico médico
353
  """)
354
+
355
  return interface
356
 
357
+ def main():
358
  interface = criar_interface()
359
+ interface.launch(share=True)
360
+
361
+ if __name__ == "__main__":
362
+ main()