55import os
66import streamlit as st
77import threading
8+ import re
9+ from typing import Optional , List
810from typing import Optional
911
1012from io import BytesIO
@@ -356,6 +358,8 @@ def message_handler(user_query: str, placeholder: st.delta_generator.DeltaGenera
356358 #os.remove(file)
357359
358360 # Store metadata in the message for later display
361+
362+ logger .info (f"RESULT METADATA: { result } " )
359363 if "paper_analysis" in result ["metadata" ].keys ():
360364 st .session_state .messages [- 1 ]["paper_analysis" ] = result ["metadata" ]["paper_analysis" ]
361365 # Display the metadata immediately after storing it
@@ -452,10 +456,13 @@ def _reaction_smiles_to_image(reaction_smiles: str):
452456
453457
454458def _render_reaction_smiles (reaction_smiles : str , caption : Optional [str ] = None ):
459+ logger .info (f"RENDERING REACTION SMILES: { reaction_smiles } " )
455460 normalized = reaction_smiles
456461 if isinstance (normalized , str ):
457462 normalized = normalized .replace (" -> " , ">>" ).replace (" → " , ">>" )
458463 normalized = normalized .replace (" + " , "." )
464+ normalized = re .sub (r">{3,}" , ">>" , normalized )
465+ normalized = re .sub (r">>\s*>>" , ">>" , normalized )
459466 img = _reaction_smiles_to_image (normalized )
460467 if img is not None :
461468 st .image (img , caption = caption )
@@ -464,6 +471,7 @@ def _render_reaction_smiles(reaction_smiles: str, caption: Optional[str] = None)
464471
465472
466473def display_retrosynthesis_metadata (message ):
474+ logger .info (f"DISPLAYING RETROSYNTHESIS METADATA: { message } " )
467475 data = message .get ("retrosynthesis" ) or {}
468476 if not data :
469477 return
@@ -522,10 +530,13 @@ def _route_sort_key(r):
522530 continue
523531 for step_idx , step in enumerate (steps , start = 1 ):
524532 reaction_smiles = step .get ("reaction_smiles" ) or step .get ("mapped_smiles" )
533+ logger .info (f"REACTION SMILES: { reaction_smiles } " )
534+ logger .info (f"STEP: { step } " )
525535 caption = f"Step { step_idx } "
526536 if step .get ("plausibility" ) is not None :
527537 caption += f" | plausibility={ step .get ('plausibility' )} "
528538 if reaction_smiles :
539+ logger .info (f"RENDERING REACTION SMILES: { reaction_smiles } " )
529540 _render_reaction_smiles (reaction_smiles , caption = caption )
530541 else :
531542 st .markdown (f"**Step { step_idx } **" )
@@ -548,10 +559,6 @@ def display_forward_prediction_metadata(message):
548559 if backend or model_name :
549560 st .markdown (f"**Backend:** `{ backend } ` **Model:** `{ model_name } `" )
550561 inputs = data .get ("inputs" ) or []
551- if inputs :
552- st .markdown ("**Inputs:**" )
553- for item in inputs :
554- st .code (item )
555562 predictions = data .get ("predictions" ) or []
556563 if predictions and isinstance (predictions , list ):
557564 predictions = sorted (
@@ -564,16 +571,16 @@ def display_forward_prediction_metadata(message):
564571 return
565572 if len (inputs ) == 1 :
566573 base = inputs [0 ]
567- for idx , pred in enumerate (predictions , start = 1 ):
574+ pred = predictions [0 ] if predictions else None
575+ if pred :
568576 prod = pred .get ("smiles" )
569577 score = pred .get ("score" )
570- if not prod :
571- continue
572- reaction_smiles = f"{ base } >>{ prod } "
573- caption = f"Prediction { idx } "
574- if score is not None :
575- caption += f" | score={ score } "
576- _render_reaction_smiles (reaction_smiles , caption = caption )
578+ if prod :
579+ reaction_smiles = f"{ base } >>{ prod } "
580+ caption = "Best prediction"
581+ if score is not None :
582+ caption += f" | score={ score } "
583+ _render_reaction_smiles (reaction_smiles , caption = caption )
577584 else :
578585 rows = [{"smiles" : p .get ("smiles" ), "score" : p .get ("score" )} for p in predictions ]
579586 st .dataframe (rows )
0 commit comments