nomadicsynth commited on
Commit
f67af4b
Β·
1 Parent(s): 6e8ab15

Add feedback logging and UI components for analysis and paper matches

Browse files
Files changed (1) hide show
  1. app.py +69 -3
app.py CHANGED
@@ -20,6 +20,12 @@ HF_TOKEN = os.getenv("HF_TOKEN")
20
  # Login to Hugging Face Hub
21
  hf_hub_login(token=HF_TOKEN, add_to_git_credential=True)
22
 
 
 
 
 
 
 
23
  # Dataset details
24
  dataset_name = "nomadicsynth/arxiv-dataset-abstract-embeddings"
25
  dataset_revision = "v1.0.0"
@@ -488,6 +494,10 @@ latex_delimiters = [
488
 
489
 
490
  def create_interface():
 
 
 
 
491
  with gr.Blocks(
492
  css="""
493
  .cell-menu-button {
@@ -549,21 +559,62 @@ def create_interface():
549
  with gr.Column(scale=1):
550
  paper_details_output = gr.Markdown(
551
  value="# Paper Details",
552
- label="Paper Details",
553
  latex_delimiters=latex_delimiters,
554
  show_copy_button=True,
555
  key="paper_details",
556
  )
 
 
 
 
 
 
 
 
 
 
557
  analyze_btn = gr.Button("Analyze Connection Potential", variant="primary", interactive=False)
558
  with gr.Column(scale=1):
559
- # Analysis output
560
  analysis_output = gr.Markdown(
561
  value="# Synergy Analysis",
562
  label="Synergy Analysis",
563
- latex_delimiters=latex_delimiters,
564
  show_copy_button=True,
565
  key="analysis_output",
566
  )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
567
 
568
  # Display paper details when row is selected
569
  def on_select(evt: gr.SelectData, papers, query):
@@ -610,6 +661,8 @@ def create_interface():
610
  lambda: gr.update(interactive=True), # Enable analyze button when paper selected
611
  outputs=[analyze_btn],
612
  api_name=False,
 
 
613
  )
614
 
615
  # Connect analyze button to run analysis
@@ -619,6 +672,19 @@ def create_interface():
619
  outputs=[analysis_output],
620
  show_progress_on=[paper_details_output, analysis_output],
621
  api_name=False,
 
 
 
 
 
 
 
 
 
 
 
 
 
622
  )
623
 
624
  return demo
 
20
  # Login to Hugging Face Hub
21
  hf_hub_login(token=HF_TOKEN, add_to_git_credential=True)
22
 
23
+ # Check if using persistent storage
24
+ persistent_storage = os.path.exists("/data")
25
+ if persistent_storage:
26
+ # Use persistent storage
27
+ print("Using persistent storage")
28
+
29
  # Dataset details
30
  dataset_name = "nomadicsynth/arxiv-dataset-abstract-embeddings"
31
  dataset_revision = "v1.0.0"
 
494
 
495
 
496
  def create_interface():
497
+ # Create CSV loggers
498
+ analysis_logger = gr.CSVLogger()
499
+ paper_match_logger = gr.CSVLogger()
500
+
501
  with gr.Blocks(
502
  css="""
503
  .cell-menu-button {
 
559
  with gr.Column(scale=1):
560
  paper_details_output = gr.Markdown(
561
  value="# Paper Details",
562
+ label="Paper Details",
563
  latex_delimiters=latex_delimiters,
564
  show_copy_button=True,
565
  key="paper_details",
566
  )
567
+ paper_feedback = gr.Radio(
568
+ ["πŸ‘ Good Match", "πŸ‘Ž Poor Match"],
569
+ label="Is this paper a good match?",
570
+ visible=False
571
+ )
572
+ paper_comment = gr.Textbox(
573
+ label="Additional feedback on this paper match (optional)",
574
+ visible=False
575
+ )
576
+ flag_paper_btn = gr.Button("Submit Paper Feedback", visible=False)
577
  analyze_btn = gr.Button("Analyze Connection Potential", variant="primary", interactive=False)
578
  with gr.Column(scale=1):
 
579
  analysis_output = gr.Markdown(
580
  value="# Synergy Analysis",
581
  label="Synergy Analysis",
582
+ latex_delimiters=latex_delimiters,
583
  show_copy_button=True,
584
  key="analysis_output",
585
  )
586
+ # Add thumbs up/down for analysis
587
+ analysis_feedback = gr.Radio(
588
+ ["πŸ‘ Helpful", "πŸ‘Ž Not Helpful"],
589
+ label="Was this analysis helpful?",
590
+ visible=False
591
+ )
592
+ analysis_comment = gr.Textbox(
593
+ label="Additional feedback on analysis (optional)",
594
+ visible=False
595
+ )
596
+ flag_analysis_btn = gr.Button("Submit Analysis Feedback", visible=False)
597
+
598
+ # Set up loggers for analysis and paper match feedback
599
+ data_path = "/data" if persistent_storage else ""
600
+ analysis_logger.setup([paper_details_output, analysis_output, analysis_feedback, analysis_comment], data_path + "flagged_analyses")
601
+ paper_match_logger.setup([abstract_input, paper_details_output, paper_feedback, paper_comment], data_path + "flagged_paper_matches")
602
+
603
+ # Show analysis feedback components when analysis is displayed
604
+ def show_analysis_feedback():
605
+ return {
606
+ analysis_feedback: gr.update(visible=True),
607
+ analysis_comment: gr.update(visible=True),
608
+ flag_analysis_btn: gr.update(visible=True)
609
+ }
610
+
611
+ # Show paper feedback when paper is selected
612
+ def show_paper_feedback():
613
+ return {
614
+ paper_feedback: gr.update(visible=True),
615
+ paper_comment: gr.update(visible=True),
616
+ flag_paper_btn: gr.update(visible=True)
617
+ }
618
 
619
  # Display paper details when row is selected
620
  def on_select(evt: gr.SelectData, papers, query):
 
661
  lambda: gr.update(interactive=True), # Enable analyze button when paper selected
662
  outputs=[analyze_btn],
663
  api_name=False,
664
+ ).then(
665
+ show_paper_feedback # Add feedback UI when paper selected
666
  )
667
 
668
  # Connect analyze button to run analysis
 
672
  outputs=[analysis_output],
673
  show_progress_on=[paper_details_output, analysis_output],
674
  api_name=False,
675
+ ).then(show_analysis_feedback)
676
+
677
+ # Add flagging handlers
678
+ flag_analysis_btn.click(
679
+ lambda *args: analysis_logger.flag(list(args)),
680
+ inputs=[paper_details_output, analysis_output, analysis_feedback, analysis_comment],
681
+ preprocess=False
682
+ )
683
+
684
+ flag_paper_btn.click(
685
+ lambda *args: paper_match_logger.flag(list(args)),
686
+ inputs=[abstract_input, paper_details_output, paper_feedback, paper_comment],
687
+ preprocess=False
688
  )
689
 
690
  return demo