JairoCesar commited on
Commit
c3a4cf3
·
verified ·
1 Parent(s): 0d0476b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +4 -17
app.py CHANGED
@@ -868,7 +868,6 @@ if st.session_state.start_analysis:
868
  else:
869
  st.error("No se pudieron identificar alimentos o síntomas claros en tu descripción. Intenta ser más específico.")
870
  st.session_state.search_results = []
871
-
872
  if st.session_state.search_results is not None:
873
  results = st.session_state.search_results
874
 
@@ -891,7 +890,6 @@ if st.session_state.search_results is not None:
891
  key="download_word_report"
892
  )
893
 
894
- # El resto del contenido de los resultados va aquí, al mismo nivel del 'col1, col2 ='
895
  st.subheader("Análisis de Relevancia de las Coincidencias")
896
  st.altair_chart(create_relevance_chart(results), use_container_width=True)
897
 
@@ -907,23 +905,17 @@ if st.session_state.search_results is not None:
907
  score_col2.metric("Puntos por Síntomas", f"{best_match_data['score']['symptoms']}")
908
  score_col3.metric("PUNTUACIÓN TOTAL", f"{best_match_data['score']['total']}", delta="Máxima coincidencia")
909
 
910
- with col2_expander:
911
  st.write("")
912
  if foodb_index:
913
  with st.popover("🔬 Componentes Moleculares del Diagnóstico"):
914
-
915
  st.info("Análisis de los compuestos en los alimentos mencionados que están directamente implicados en el diagnóstico principal.")
916
-
917
  user_foods_mentioned = st.session_state.entities.get("alimentos", [])
918
 
919
  if not user_foods_mentioned:
920
  st.warning("No se identificó un alimento específico para buscar.")
921
  else:
922
- # --- NUEVA LÓGICA INTELIGENTE ---
923
- # 1. IDENTIFICAR LOS SÍNTOMAS CLAVE DEL DIAGNÓSTICO PRINCIPAL
924
  main_diagnosis_symptoms = set(s.lower() for s in best_match.get("sintomas_clave", []))
925
-
926
- # 2. ENCONTRAR LOS COMPUESTOS DESENCADENANTES PARA ESOS SÍNTOMAS USANDO NUESTRO CONOCIMIENTO EXPERTO
927
  target_compounds = set()
928
  for compound, triggered_symptoms in KNOWN_TRIGGERS_MAP.items():
929
  if any(symptom in main_diagnosis_symptoms for symptom in triggered_symptoms):
@@ -932,23 +924,18 @@ with col2_expander:
932
  if not target_compounds:
933
  st.warning(f"No se pudieron determinar los compuestos moleculares clave para '{best_match.get('condicion_asociada')}'.")
934
  else:
935
- # 3. ENCONTRAR LOS ALIMENTOS MÁS RELEVANTES MENCIONADOS POR EL USUARIO
936
  best_food_matches = find_best_foodb_matches(user_foods_mentioned, foodb_index.keys(), FOOD_NAME_TO_FOODB_KEY)
937
-
938
  if not best_food_matches:
939
  st.warning("No se encontraron datos moleculares para los alimentos específicos mencionados.")
940
  else:
941
  found_any_data = False
942
  for food_key in best_food_matches:
943
  compounds_data = foodb_index.get(food_key, [])
944
-
945
- # 4. BUSCAR LOS COMPUESTOS OBJETIVO EN CADA ALIMENTO
946
  relevant_compounds = []
947
  for item in compounds_data:
948
  compound_name_lower = item['compound'].lower()
949
  if any(target in compound_name_lower for target in target_compounds):
950
  relevant_compounds.append(item)
951
-
952
  if relevant_compounds:
953
  found_any_data = True
954
  with st.container(border=True):
@@ -957,12 +944,10 @@ with col2_expander:
957
  for item in relevant_compounds[:5]:
958
  st.write(f"**Compuesto:** {item['compound']}")
959
  st.caption(f"Este compuesto está directamente relacionado con '{best_match.get('condicion_asociada')}'.")
960
-
961
  if not found_any_data:
962
  st.warning(f"No se encontraron los compuestos específicos de '{best_match.get('condicion_asociada')}' en los alimentos analizados en la base de datos FoodB.")
963
 
964
  st.markdown("---")
965
-
966
  with st.container(border=True):
967
  st.markdown("##### 🧠 Posibles Efectos Neuropsicológicos de los Componentes")
968
  user_foods = st.session_state.entities.get("alimentos", [])
@@ -982,8 +967,8 @@ with col2_expander:
982
  st.markdown(f"**Efecto:** {effect_info['efecto_neuropsicologico']}")
983
  if not found_neuro_effect:
984
  st.info("No se encontraron efectos neuropsicológicos específicos en la base de datos para los componentes de los alimentos mencionados.")
 
985
  st.markdown("---")
986
-
987
  with st.spinner("✍️ Generando un análisis personalizado con IA..."):
988
  if 'best_match_analysis' not in st.session_state.analysis_cache:
989
  try:
@@ -1020,8 +1005,10 @@ with col2_expander:
1020
  st.session_state.analysis_cache[analysis_key] = analysis_text
1021
  except Exception as e:
1022
  st.session_state.analysis_cache[analysis_key] = f"❌ Error al generar análisis para {entry.get('condicion_asociada')}."
 
1023
  if analysis_key in st.session_state.analysis_cache:
1024
  st.info(st.session_state.analysis_cache[analysis_key])
1025
 
 
1026
  if i < len(results[1:5]) - 1:
1027
  st.markdown("---")
 
868
  else:
869
  st.error("No se pudieron identificar alimentos o síntomas claros en tu descripción. Intenta ser más específico.")
870
  st.session_state.search_results = []
 
871
  if st.session_state.search_results is not None:
872
  results = st.session_state.search_results
873
 
 
890
  key="download_word_report"
891
  )
892
 
 
893
  st.subheader("Análisis de Relevancia de las Coincidencias")
894
  st.altair_chart(create_relevance_chart(results), use_container_width=True)
895
 
 
905
  score_col2.metric("Puntos por Síntomas", f"{best_match_data['score']['symptoms']}")
906
  score_col3.metric("PUNTUACIÓN TOTAL", f"{best_match_data['score']['total']}", delta="Máxima coincidencia")
907
 
908
+ with col2_expander:
909
  st.write("")
910
  if foodb_index:
911
  with st.popover("🔬 Componentes Moleculares del Diagnóstico"):
 
912
  st.info("Análisis de los compuestos en los alimentos mencionados que están directamente implicados en el diagnóstico principal.")
 
913
  user_foods_mentioned = st.session_state.entities.get("alimentos", [])
914
 
915
  if not user_foods_mentioned:
916
  st.warning("No se identificó un alimento específico para buscar.")
917
  else:
 
 
918
  main_diagnosis_symptoms = set(s.lower() for s in best_match.get("sintomas_clave", []))
 
 
919
  target_compounds = set()
920
  for compound, triggered_symptoms in KNOWN_TRIGGERS_MAP.items():
921
  if any(symptom in main_diagnosis_symptoms for symptom in triggered_symptoms):
 
924
  if not target_compounds:
925
  st.warning(f"No se pudieron determinar los compuestos moleculares clave para '{best_match.get('condicion_asociada')}'.")
926
  else:
 
927
  best_food_matches = find_best_foodb_matches(user_foods_mentioned, foodb_index.keys(), FOOD_NAME_TO_FOODB_KEY)
 
928
  if not best_food_matches:
929
  st.warning("No se encontraron datos moleculares para los alimentos específicos mencionados.")
930
  else:
931
  found_any_data = False
932
  for food_key in best_food_matches:
933
  compounds_data = foodb_index.get(food_key, [])
 
 
934
  relevant_compounds = []
935
  for item in compounds_data:
936
  compound_name_lower = item['compound'].lower()
937
  if any(target in compound_name_lower for target in target_compounds):
938
  relevant_compounds.append(item)
 
939
  if relevant_compounds:
940
  found_any_data = True
941
  with st.container(border=True):
 
944
  for item in relevant_compounds[:5]:
945
  st.write(f"**Compuesto:** {item['compound']}")
946
  st.caption(f"Este compuesto está directamente relacionado con '{best_match.get('condicion_asociada')}'.")
 
947
  if not found_any_data:
948
  st.warning(f"No se encontraron los compuestos específicos de '{best_match.get('condicion_asociada')}' en los alimentos analizados en la base de datos FoodB.")
949
 
950
  st.markdown("---")
 
951
  with st.container(border=True):
952
  st.markdown("##### 🧠 Posibles Efectos Neuropsicológicos de los Componentes")
953
  user_foods = st.session_state.entities.get("alimentos", [])
 
967
  st.markdown(f"**Efecto:** {effect_info['efecto_neuropsicologico']}")
968
  if not found_neuro_effect:
969
  st.info("No se encontraron efectos neuropsicológicos específicos en la base de datos para los componentes de los alimentos mencionados.")
970
+
971
  st.markdown("---")
 
972
  with st.spinner("✍️ Generando un análisis personalizado con IA..."):
973
  if 'best_match_analysis' not in st.session_state.analysis_cache:
974
  try:
 
1005
  st.session_state.analysis_cache[analysis_key] = analysis_text
1006
  except Exception as e:
1007
  st.session_state.analysis_cache[analysis_key] = f"❌ Error al generar análisis para {entry.get('condicion_asociada')}."
1008
+
1009
  if analysis_key in st.session_state.analysis_cache:
1010
  st.info(st.session_state.analysis_cache[analysis_key])
1011
 
1012
+ # Esta es la línea que probablemente causaba el error, ahora está correctamente indentada
1013
  if i < len(results[1:5]) - 1:
1014
  st.markdown("---")