DHEIVER's picture
Update app.py
bcdc3a3 verified
raw
history blame
13.7 kB
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()