Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -815,41 +815,79 @@ if st.session_state.search_results is not None:
|
|
| 815 |
st.write("")
|
| 816 |
if foodb_index:
|
| 817 |
with st.popover("🔬 Componentes Moleculares Relevantes"):
|
|
|
|
|
|
|
|
|
|
| 818 |
st.info("Compuestos en los alimentos mencionados que podrían estar relacionados con tus síntomas.")
|
|
|
|
| 819 |
user_foods_mentioned = st.session_state.entities.get("alimentos", [])
|
| 820 |
user_symptoms_es = st.session_state.entities.get("sintomas", [])
|
| 821 |
|
| 822 |
if not user_foods_mentioned or not user_symptoms_es:
|
| 823 |
st.warning("Se necesita al menos un alimento y un síntoma para el análisis molecular.")
|
| 824 |
else:
|
| 825 |
-
|
|
|
|
| 826 |
search_terms_en = []
|
| 827 |
for alimento_es in user_foods_mentioned:
|
| 828 |
for key_es, value_en_list in FOOD_NAME_TO_FOODB_KEY.items():
|
| 829 |
if key_es in alimento_es.lower():
|
| 830 |
search_terms_en.extend(value_en_list)
|
|
|
|
| 831 |
symptom_keywords_en = []
|
| 832 |
for symptom_es in user_symptoms_es:
|
| 833 |
if symptom_es in MASTER_SYMPTOM_MAP:
|
| 834 |
symptom_keywords_en.extend(MASTER_SYMPTOM_MAP[symptom_es].get('keywords_en', []))
|
|
|
|
| 835 |
for foodb_key, compounds_data in foodb_index.items():
|
| 836 |
if any(term in foodb_key.lower() for term in set(search_terms_en)):
|
| 837 |
-
|
|
|
|
|
|
|
|
|
|
| 838 |
for item in compounds_data:
|
| 839 |
effects_en = item.get("effects", [])
|
| 840 |
-
|
| 841 |
-
|
| 842 |
-
|
| 843 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 844 |
with st.container(border=True):
|
| 845 |
st.subheader(f"Análisis de: {foodb_key.capitalize()}")
|
| 846 |
-
|
| 847 |
-
|
| 848 |
-
|
| 849 |
-
st.
|
| 850 |
-
|
| 851 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 852 |
st.warning("No se encontraron compuestos moleculares directamente relacionados con tus síntomas para los alimentos mencionados.")
|
|
|
|
| 853 |
st.markdown("---")
|
| 854 |
|
| 855 |
with st.container(border=True):
|
|
|
|
| 815 |
st.write("")
|
| 816 |
if foodb_index:
|
| 817 |
with st.popover("🔬 Componentes Moleculares Relevantes"):
|
| 818 |
+
|
| 819 |
+
REMEDIAL_PREFIXES = ("anti", "preventive", "remedy", "treatment", "inhibitor")
|
| 820 |
+
|
| 821 |
st.info("Compuestos en los alimentos mencionados que podrían estar relacionados con tus síntomas.")
|
| 822 |
+
|
| 823 |
user_foods_mentioned = st.session_state.entities.get("alimentos", [])
|
| 824 |
user_symptoms_es = st.session_state.entities.get("sintomas", [])
|
| 825 |
|
| 826 |
if not user_foods_mentioned or not user_symptoms_es:
|
| 827 |
st.warning("Se necesita al menos un alimento y un síntoma para el análisis molecular.")
|
| 828 |
else:
|
| 829 |
+
found_any_data = False
|
| 830 |
+
|
| 831 |
search_terms_en = []
|
| 832 |
for alimento_es in user_foods_mentioned:
|
| 833 |
for key_es, value_en_list in FOOD_NAME_TO_FOODB_KEY.items():
|
| 834 |
if key_es in alimento_es.lower():
|
| 835 |
search_terms_en.extend(value_en_list)
|
| 836 |
+
|
| 837 |
symptom_keywords_en = []
|
| 838 |
for symptom_es in user_symptoms_es:
|
| 839 |
if symptom_es in MASTER_SYMPTOM_MAP:
|
| 840 |
symptom_keywords_en.extend(MASTER_SYMPTOM_MAP[symptom_es].get('keywords_en', []))
|
| 841 |
+
|
| 842 |
for foodb_key, compounds_data in foodb_index.items():
|
| 843 |
if any(term in foodb_key.lower() for term in set(search_terms_en)):
|
| 844 |
+
|
| 845 |
+
causative_compounds = []
|
| 846 |
+
remedial_compounds = []
|
| 847 |
+
|
| 848 |
for item in compounds_data:
|
| 849 |
effects_en = item.get("effects", [])
|
| 850 |
+
is_causative = False
|
| 851 |
+
is_remedial = False
|
| 852 |
+
|
| 853 |
+
# Clasificar los efectos
|
| 854 |
+
for effect in effects_en:
|
| 855 |
+
if any(keyword in effect.lower() for keyword in symptom_keywords_en):
|
| 856 |
+
if effect.lower().startswith(REMEDIAL_PREFIXES):
|
| 857 |
+
is_remedial = True
|
| 858 |
+
else:
|
| 859 |
+
is_causative = True
|
| 860 |
+
|
| 861 |
+
if is_causative:
|
| 862 |
+
causative_compounds.append(item)
|
| 863 |
+
elif is_remedial:
|
| 864 |
+
remedial_compounds.append(item)
|
| 865 |
+
|
| 866 |
+
if causative_compounds or remedial_compounds:
|
| 867 |
+
found_any_data = True
|
| 868 |
with st.container(border=True):
|
| 869 |
st.subheader(f"Análisis de: {foodb_key.capitalize()}")
|
| 870 |
+
|
| 871 |
+
# Mostrar compuestos causantes primero
|
| 872 |
+
if causative_compounds:
|
| 873 |
+
st.markdown("###### 🔬 Posibles Compuestos Causantes:")
|
| 874 |
+
for item in causative_compounds[:3]:
|
| 875 |
+
st.write(f"**Compuesto:** {item['compound']}")
|
| 876 |
+
relevant_effects = [eff for eff in item['effects'] if any(kw in eff.lower() and not eff.lower().startswith(REMEDIAL_PREFIXES) for kw in symptom_keywords_en)]
|
| 877 |
+
st.write(f"**Efectos Relevantes:** {', '.join(relevant_effects)}")
|
| 878 |
+
|
| 879 |
+
# Mostrar compuestos remediales después
|
| 880 |
+
if remedial_compounds:
|
| 881 |
+
st.markdown("###### 💊 Compuestos con Efectos Potencialmente Beneficiosos:")
|
| 882 |
+
for item in remedial_compounds[:3]:
|
| 883 |
+
st.write(f"**Compuesto:** {item['compound']}")
|
| 884 |
+
relevant_effects = [eff for eff in item['effects'] if any(kw in eff.lower() and eff.lower().startswith(REMEDIAL_PREFIXES) for kw in symptom_keywords_en)]
|
| 885 |
+
st.write(f"**Efectos Relevantes:** {', '.join(relevant_effects)}")
|
| 886 |
+
st.markdown("---")
|
| 887 |
+
|
| 888 |
+
if not found_any_data:
|
| 889 |
st.warning("No se encontraron compuestos moleculares directamente relacionados con tus síntomas para los alimentos mencionados.")
|
| 890 |
+
|
| 891 |
st.markdown("---")
|
| 892 |
|
| 893 |
with st.container(border=True):
|