Spaces:
Running
Running
import gradio as gr | |
import cv2 | |
import numpy as np | |
from PIL import Image | |
import io | |
from collections import defaultdict | |
# Mapeamento de sinais iridológicos para condições de saúde com probabilidades | |
SINAIS_CONDICOES = { | |
"congestao_inflamacao": { | |
"Artrite": 0.75, | |
"Inflamação Crônica": 0.80, | |
"Processo Autoimune": 0.65, | |
"Alergias": 0.70 | |
}, | |
"deficiencia_hipofuncao": { | |
"Fadiga Crônica": 0.70, | |
"Deficiência Nutricional": 0.75, | |
"Hipotireoidismo": 0.65, | |
"Anemia": 0.60 | |
}, | |
"atrofia_degeneracao": { | |
"Osteoporose": 0.70, | |
"Degeneração Articular": 0.75, | |
"Problemas Circulatórios": 0.65, | |
"Disfunção Orgânica": 0.80 | |
}, | |
"irritacao_estresse": { | |
"Ansiedade": 0.80, | |
"Estresse Crônico": 0.85, | |
"Insônia": 0.70, | |
"Síndrome do Intestino Irritável": 0.65 | |
} | |
} | |
# Correlações entre regiões e sistemas | |
CORRELACOES_SISTEMAS = { | |
"Cerebro": { | |
"Sistema Nervoso Central": 0.90, | |
"Cognição": 0.85, | |
"Equilíbrio Hormonal": 0.70 | |
}, | |
"Sistema Nervoso": { | |
"Função Neurológica": 0.85, | |
"Stress": 0.80, | |
"Sono": 0.75 | |
}, | |
"Pulmao": { | |
"Sistema Respiratório": 0.90, | |
"Oxigenação": 0.85, | |
"Alergias": 0.70 | |
}, | |
"Coracao": { | |
"Sistema Circulatório": 0.90, | |
"Pressão Arterial": 0.85, | |
"Energia Vital": 0.75 | |
}, | |
"Figado": { | |
"Desintoxicação": 0.90, | |
"Metabolismo": 0.85, | |
"Digestão": 0.80 | |
}, | |
"Estomago": { | |
"Digestão": 0.90, | |
"Absorção": 0.85, | |
"Acidez": 0.80 | |
}, | |
"Intestino": { | |
"Flora Intestinal": 0.85, | |
"Absorção": 0.80, | |
"Imunidade": 0.75 | |
} | |
} | |
def calcular_probabilidade_doenca(sinais, regiao): | |
""" | |
Calcula a probabilidade de doenças baseada nos sinais e região | |
""" | |
probabilidades = defaultdict(float) | |
peso_base = 0.0 | |
# Análise dos sinais | |
for sinal, condicoes in SINAIS_CONDICOES.items(): | |
if sinal in sinais: | |
for condicao, prob in condicoes.items(): | |
probabilidades[condicao] += prob | |
peso_base += 1 | |
# Ajuste baseado nas correlações do sistema | |
if regiao in CORRELACOES_SISTEMAS: | |
for sistema, correlacao in CORRELACOES_SISTEMAS[regiao].items(): | |
for condicao in probabilidades: | |
probabilidades[condicao] *= correlacao | |
# Normalização das probabilidades | |
if peso_base > 0: | |
for condicao in probabilidades: | |
probabilidades[condicao] = min(probabilidades[condicao] / peso_base, 1.0) | |
return dict(probabilidades) | |
def analisar_padroes_cronicos(dados_analise): | |
""" | |
Analisa padrões crônicos nos dados | |
""" | |
padroes = defaultdict(int) | |
total_observacoes = 0 | |
for linha in dados_analise.split('\n'): | |
if 'Região:' in linha: | |
total_observacoes += 1 | |
if 'congestão/inflamação' in linha: | |
padroes['inflamacao_cronica'] += 1 | |
if 'deficiência/hipofunção' in linha: | |
padroes['deficiencia_sistemica'] += 1 | |
if 'atrofia/degeneração' in linha: | |
padroes['degeneracao_cronica'] += 1 | |
# Calcula percentuais | |
if total_observacoes > 0: | |
for padrao in padroes: | |
padroes[padrao] = padroes[padrao] / total_observacoes | |
return dict(padroes) | |
def gerar_recomendacoes_avancadas(probabilidades, padroes_cronicos): | |
""" | |
Gera recomendações baseadas nas probabilidades e padrões crônicos | |
""" | |
recomendacoes = [] | |
# Recomendações baseadas em probabilidades altas | |
for condicao, prob in probabilidades.items(): | |
if prob > 0.7: | |
if "Artrite" in condicao or "Inflamação" in condicao: | |
recomendacoes.append({ | |
"condição": condicao, | |
"probabilidade": f"{prob*100:.1f}%", | |
"exames_sugeridos": ["PCR", "VHS", "Anti-CCP"], | |
"especialidades": ["Reumatologia", "Clínica Médica"], | |
"abordagens_naturais": [ | |
"Suplementação de Ômega 3", | |
"Curcumina", | |
"Exercícios de baixo impacto" | |
] | |
}) | |
elif "Fadiga" in condicao or "Deficiência" in condicao: | |
recomendacoes.append({ | |
"condição": condicao, | |
"probabilidade": f"{prob*100:.1f}%", | |
"exames_sugeridos": ["Vitamina D", "B12", "Ferritina", "Hormônios tireoidianos"], | |
"especialidades": ["Endocrinologia", "Clínica Médica"], | |
"abordagens_naturais": [ | |
"Adaptógenos", | |
"Vitaminas do complexo B", | |
"Gestão do estresse" | |
] | |
}) | |
elif "Ansiedade" in condicao or "Estresse" in condicao: | |
recomendacoes.append({ | |
"condição": condicao, | |
"probabilidade": f"{prob*100:.1f}%", | |
"exames_sugeridos": ["Cortisol", "DHEA", "Neurotransmissores"], | |
"especialidades": ["Psiquiatria", "Psicologia"], | |
"abordagens_naturais": [ | |
"Meditação", | |
"Magnésio", | |
"Terapias integrativas" | |
] | |
}) | |
# Ajustes baseados em padrões crônicos | |
for padrao, valor in padroes_cronicos.items(): | |
if valor > 0.5: | |
if padrao == "inflamacao_cronica": | |
recomendacoes.append({ | |
"padrão": "Inflamação Sistêmica", | |
"prevalência": f"{valor*100:.1f}%", | |
"abordagem_sistêmica": [ | |
"Dieta anti-inflamatória", | |
"Probióticos", | |
"Moduladores imunológicos naturais" | |
] | |
}) | |
elif padrao == "deficiencia_sistemica": | |
recomendacoes.append({ | |
"padrão": "Deficiência Nutricional Sistêmica", | |
"prevalência": f"{valor*100:.1f}%", | |
"abordagem_sistêmica": [ | |
"Avaliação nutricional completa", | |
"Suplementação personalizada", | |
"Otimização da absorção intestinal" | |
] | |
}) | |
return recomendacoes | |
def criar_interface(): | |
""" | |
Cria a interface do usuário com Gradio | |
""" | |
def analisar(texto_analise): | |
# Processar cada região | |
resultados = defaultdict(list) | |
regiao_atual = None | |
sinais_atuais = [] | |
for linha in texto_analise.split('\n'): | |
if 'Região:' in linha: | |
if regiao_atual and sinais_atuais: | |
prob = calcular_probabilidade_doenca(sinais_atuais, regiao_atual) | |
resultados[regiao_atual].append(prob) | |
regiao_atual = linha.split('Região:')[1].strip() | |
sinais_atuais = [] | |
if regiao_atual: | |
if 'congestão/inflamação' in linha: | |
sinais_atuais.append('congestao_inflamacao') | |
if 'deficiência/hipofunção' in linha: | |
sinais_atuais.append('deficiencia_hipofuncao') | |
if 'atrofia/degeneração' in linha: | |
sinais_atuais.append('atrofia_degeneracao') | |
if 'irritação/estresse' in linha: | |
sinais_atuais.append('irritacao_estresse') | |
# Analisar padrões crônicos | |
padroes = analisar_padroes_cronicos(texto_analise) | |
# Gerar relatório | |
saida = "ANÁLISE PROBABILÍSTICA DE CONDIÇÕES DE SAÚDE\n\n" | |
# Agrupar por sistemas principais | |
sistemas = { | |
"Sistema Nervoso": ["Cerebro", "Sistema Nervoso"], | |
"Sistema Digestivo": ["Estomago", "Figado", "Vesicula", "Pancreas", | |
"Sistema Digestivo", "Intestino Grosso", "Intestino Delgado"], | |
"Sistema Circulatório": ["Coracao"], | |
"Sistema Respiratório": ["Pulmao", "Bronquios"], | |
"Sistema Endócrino": ["Tireoide"], | |
"Sistema Urinário": ["Rim Direito", "Rim Esquerdo", "Bexiga"] | |
} | |
for sistema, orgaos in sistemas.items(): | |
saida += f"\n{sistema}:\n" | |
encontrado = False | |
for orgao in orgaos: | |
if orgao in resultados: | |
encontrado = True | |
saida += f"\n• {orgao}:\n" | |
# Calcular média das probabilidades para o órgão | |
prob_medias = defaultdict(list) | |
for prob_dict in resultados[orgao]: | |
for cond, prob in prob_dict.items(): | |
prob_medias[cond].append(prob) | |
# Mostrar apenas condições com probabilidade significativa | |
for cond, probs in prob_medias.items(): | |
media = sum(probs) / len(probs) | |
if media > 0.5: # Mostrar apenas probabilidades > 50% | |
saida += f" - {cond}: {media*100:.1f}% de probabilidade\n" | |
if not encontrado: | |
saida += " Sem alterações significativas\n" | |
# Adicionar análise de padrões crônicos | |
saida += "\nPADRÕES CRÔNICOS IDENTIFICADOS:\n" | |
for padrao, valor in padroes.items(): | |
if valor > 0.3: # Mostrar padrões com mais de 30% de prevalência | |
saida += f"• {padrao.replace('_', ' ').title()}: {valor*100:.1f}% de prevalência\n" | |
# Gerar e adicionar recomendações | |
recomendacoes = gerar_recomendacoes_avancadas( | |
{k: v for d in [prob for probs in resultados.values() for prob in probs] | |
for k, v in d.items()}, | |
padroes | |
) | |
if recomendacoes: | |
saida += "\nRECOMENDAÇÕES BASEADAS NA ANÁLISE:\n" | |
for rec in recomendacoes: | |
if "condição" in rec: | |
saida += f"\n• {rec['condição']} ({rec['probabilidade']}):\n" | |
saida += f" Exames Sugeridos: {', '.join(rec['exames_sugeridos'])}\n" | |
saida += f" Especialidades: {', '.join(rec['especialidades'])}\n" | |
saida += f" Abordagens Naturais: {', '.join(rec['abordagens_naturais'])}\n" | |
elif "padrão" in rec: | |
saida += f"\n• {rec['padrão']} ({rec['prevalência']}):\n" | |
saida += f" Abordagem Sistêmica: {', '.join(rec['abordagem_sistêmica'])}\n" | |
return saida | |
# Interface | |
with gr.Blocks(title="Análise Iridológica Probabilística") as interface: | |
gr.Markdown(""" | |
# Sistema Avançado de Análise Iridológica Probabilística | |
Este sistema utiliza técnicas avançadas de iridologia para calcular probabilidades de condições de saúde. | |
""") | |
with gr.Tabs(): | |
with gr.Tab("Análise Probabilística"): | |
input_text = gr.Textbox( | |
label="Dados da Análise Iridológica", | |
lines=10, | |
placeholder="Cole os dados da análise aqui..." | |
) | |
analysis_btn = gr.Button("Analisar Probabilidades", variant="primary") | |
output_text = gr.Textbox( | |
label="Relatório de Probabilidades", | |
lines=30 | |
) | |
analysis_btn.click( | |
fn=analisar, | |
inputs=[input_text], | |
outputs=[output_text] | |
) | |
with gr.Tab("Informações"): | |
gr.Markdown(""" | |
## Sobre a Análise Probabilística | |
Este sistema utiliza algoritmos avançados para: | |
1. Calcular probabilidades de condições de saúde | |
2. Identificar padrões crônicos | |
3. Correlacionar sinais iridológicos | |
4. Gerar recomendações personalizadas | |
### Metodologia | |
O sistema analisa: | |
* Sinais específicos em cada região da íris | |
* Correlações entre diferentes regiões | |
* Padrões crônicos e agudos | |
* Intensidade e frequência dos sinais | |
### Interpretação das Probabilidades | |
* >80%: Alta probabilidade | |
* 60-80%: Probabilidade moderada | |
* 40-60%: Probabilidade média | |
* <40%: Baixa probabilidade | |
### Limitações | |
* As probabilidades são indicativas | |
* Necessária confirmação com exames clínicos | |
* Consulte profissionais especializados | |
* Resultados não substituem diagnóstico médico | |
""") | |
return interface | |
def main(): | |
interface = criar_interface() | |
interface.launch(share=True) | |
if __name__ == "__main__": | |
main() |