JairoCesar commited on
Commit
e2c1917
·
verified ·
1 Parent(s): 58cd74b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -12
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
- found_relevant_data = False
 
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
- relevant_compounds = []
 
 
 
838
  for item in compounds_data:
839
  effects_en = item.get("effects", [])
840
- if any(keyword_en in effect.lower() for keyword_en in symptom_keywords_en for effect in effects_en):
841
- relevant_compounds.append(item)
842
- if relevant_compounds:
843
- found_relevant_data = True
 
 
 
 
 
 
 
 
 
 
 
 
 
 
844
  with st.container(border=True):
845
  st.subheader(f"Análisis de: {foodb_key.capitalize()}")
846
- for item in relevant_compounds[:5]:
847
- st.write(f"**Compuesto:** {item['compound']}")
848
- relevant_effects = [eff for eff in item['effects'] if any(kw in eff.lower() for kw in symptom_keywords_en)]
849
- st.write(f"**Efectos Relevantes (en inglés):** {', '.join(relevant_effects)}")
850
- st.markdown("---")
851
- if not found_relevant_data:
 
 
 
 
 
 
 
 
 
 
 
 
 
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):