Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -518,8 +518,43 @@ if st.session_state.search_results is not None:
|
|
| 518 |
score_col1.metric("Puntos por Alimento(s)", f"{best_match_data['score']['food']}")
|
| 519 |
score_col2.metric("Puntos por Síntomas", f"{best_match_data['score']['symptoms']}")
|
| 520 |
score_col3.metric("PUNTUACIÓN TOTAL", f"{best_match_data['score']['total']}", delta="Máxima coincidencia")
|
| 521 |
-
|
| 522 |
-
st.write("")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 523 |
if foodb_index:
|
| 524 |
with st.popover("🔬 Componentes moleculares"):
|
| 525 |
st.info("Información de la base de datos FoodB (en inglés).")
|
|
|
|
| 518 |
score_col1.metric("Puntos por Alimento(s)", f"{best_match_data['score']['food']}")
|
| 519 |
score_col2.metric("Puntos por Síntomas", f"{best_match_data['score']['symptoms']}")
|
| 520 |
score_col3.metric("PUNTUACIÓN TOTAL", f"{best_match_data['score']['total']}", delta="Máxima coincidencia")
|
| 521 |
+
with col2:
|
| 522 |
+
st.write("") # Para alinear verticalmente el popover
|
| 523 |
+
if foodb_index:
|
| 524 |
+
with st.popover("🔬 Componentes moleculares"):
|
| 525 |
+
st.info("Información de la base de datos FoodB (en inglés).")
|
| 526 |
+
user_foods_mentioned = st.session_state.entities.get("alimentos", [])
|
| 527 |
+
|
| 528 |
+
if not user_foods_mentioned:
|
| 529 |
+
st.warning("No se identificó un alimento específico para buscar.")
|
| 530 |
+
else:
|
| 531 |
+
found_data = False
|
| 532 |
+
displayed_foodb_keys = set()
|
| 533 |
+
|
| 534 |
+
# Iterar sobre los alimentos que el usuario mencionó
|
| 535 |
+
for alimento_es in user_foods_mentioned:
|
| 536 |
+
search_terms_en = []
|
| 537 |
+
# Traducir de español a inglés usando el diccionario
|
| 538 |
+
for key_es, value_en_list in FOOD_NAME_TO_FOODB_KEY.items():
|
| 539 |
+
if key_es in alimento_es.lower():
|
| 540 |
+
search_terms_en.extend(value_en_list)
|
| 541 |
+
|
| 542 |
+
# Buscar los términos en inglés en el índice de FoodB
|
| 543 |
+
for term in set(search_terms_en):
|
| 544 |
+
for foodb_key, foodb_data in foodb_index.items():
|
| 545 |
+
if term in foodb_key and foodb_key not in displayed_foodb_keys:
|
| 546 |
+
found_data = True
|
| 547 |
+
displayed_foodb_keys.add(foodb_key)
|
| 548 |
+
with st.container(border=True):
|
| 549 |
+
st.subheader(f"Análisis de: {foodb_key.capitalize()}")
|
| 550 |
+
# Mostrar los 3 compuestos más relevantes
|
| 551 |
+
for item in foodb_data[:3]:
|
| 552 |
+
st.write(f"**Compuesto:** {item['compound']}")
|
| 553 |
+
st.write(f"**Efectos reportados:** {', '.join(item['effects'])}")
|
| 554 |
+
st.markdown("---")
|
| 555 |
+
|
| 556 |
+
if not found_data:
|
| 557 |
+
st.warning("No se encontraron datos moleculares para los alimentos mencionados.")
|
| 558 |
if foodb_index:
|
| 559 |
with st.popover("🔬 Componentes moleculares"):
|
| 560 |
st.info("Información de la base de datos FoodB (en inglés).")
|