anujjuna commited on
Commit
079d3be
Β·
verified Β·
1 Parent(s): 6e14964

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -12
app.py CHANGED
@@ -70,12 +70,22 @@ def load_review_table():
70
 
71
 
72
  def _empty_table():
73
- return [[None] * 8]
 
 
 
 
74
 
75
 
76
  def _format_table(data, mode):
 
77
  rows = list(map(lambda item: _format_row(item, mode), data))
78
- return rows if rows else _empty_table()
 
 
 
 
 
79
 
80
 
81
  def _format_row(item, mode):
@@ -136,31 +146,55 @@ def get_download_files():
136
 
137
  # ── Table-to-theme-map parser ──────────────────────────────────────────────────
138
  def parse_table_to_message(table_data):
139
- """Convert review table edits into a structured message for the agent."""
140
- if not table_data:
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  return "Submit Review: No table data provided."
142
 
143
- approved = list(filter(lambda row: len(row) >= 6 and str(row[5]).lower() in ("yes", "y", "1", "true"), table_data))
144
- rejected = list(filter(lambda row: len(row) >= 6 and str(row[5]).lower() in ("no", "n", "0", "false"), table_data))
 
 
 
 
 
 
145
 
146
  theme_groups = {}
147
  list(map(
148
- lambda row: theme_groups.setdefault(str(row[6]) if len(row) > 6 and row[6] else str(row[1]), []).append(int(row[0]) if str(row[0]).isdigit() else row[0]),
 
 
 
149
  approved,
150
  ))
151
 
152
  theme_map_str = json.dumps(theme_groups)
153
 
 
 
 
 
 
154
  msg = (
155
  f"Submit Review received.\n\n"
156
  f"Approved topics: {len(approved)}\n"
157
  f"Rejected topics: {len(rejected)}\n\n"
158
  f"Theme groupings (RENAME TO β†’ [topic_ids]):\n{theme_map_str}\n\n"
159
- f"Researcher reasoning summary:\n"
160
- + "\n".join(list(map(
161
- lambda row: f" - Topic {row[0]} ({row[1]}): {row[7]}" if len(row) > 7 and row[7] else "",
162
- approved,
163
- )))
164
  + "\n\nPlease proceed to the next phase based on these decisions."
165
  )
166
  return msg
@@ -372,6 +406,7 @@ if __name__ == "__main__":
372
  demo.launch(
373
  server_name="0.0.0.0",
374
  server_port=7860,
 
375
  share=False,
376
  theme=gr.themes.Base(
377
  primary_hue="emerald",
 
70
 
71
 
72
  def _empty_table():
73
+ import pandas as pd
74
+ return pd.DataFrame(
75
+ [["", "", "", 0, "", "yes", "", ""]],
76
+ columns=["#", "Topic Label", "Top Evidence", "Sentences", "Papers", "Approve", "Rename To", "Reasoning"],
77
+ )
78
 
79
 
80
  def _format_table(data, mode):
81
+ import pandas as pd
82
  rows = list(map(lambda item: _format_row(item, mode), data))
83
+ if not rows:
84
+ return _empty_table()
85
+ return pd.DataFrame(
86
+ rows,
87
+ columns=["#", "Topic Label", "Top Evidence", "Sentences", "Papers", "Approve", "Rename To", "Reasoning"],
88
+ )
89
 
90
 
91
  def _format_row(item, mode):
 
146
 
147
  # ── Table-to-theme-map parser ──────────────────────────────────────────────────
148
  def parse_table_to_message(table_data):
149
+ """Convert review table edits into a structured message for the agent.
150
+ Handles both pandas DataFrame (from gr.Dataframe) and list of lists."""
151
+ import pandas as pd
152
+
153
+ # Normalise to list of lists regardless of input type
154
+ if table_data is None:
155
+ return "Submit Review: No table data provided."
156
+ if isinstance(table_data, pd.DataFrame):
157
+ if table_data.empty:
158
+ return "Submit Review: Table is empty, nothing to review."
159
+ rows = table_data.values.tolist()
160
+ else:
161
+ rows = list(table_data) if table_data else []
162
+
163
+ if not rows:
164
  return "Submit Review: No table data provided."
165
 
166
+ approved = list(filter(
167
+ lambda row: len(row) >= 6 and str(row[5]).strip().lower() in ("yes", "y", "1", "true"),
168
+ rows,
169
+ ))
170
+ rejected = list(filter(
171
+ lambda row: len(row) >= 6 and str(row[5]).strip().lower() in ("no", "n", "0", "false"),
172
+ rows,
173
+ ))
174
 
175
  theme_groups = {}
176
  list(map(
177
+ lambda row: theme_groups.setdefault(
178
+ str(row[6]).strip() if len(row) > 6 and row[6] and str(row[6]).strip() else str(row[1]),
179
+ []
180
+ ).append(int(row[0]) if str(row[0]).isdigit() else str(row[0])),
181
  approved,
182
  ))
183
 
184
  theme_map_str = json.dumps(theme_groups)
185
 
186
+ reasoning_lines = list(filter(None, list(map(
187
+ lambda row: f" - Topic {row[0]} ({row[1]}): {row[7]}" if len(row) > 7 and str(row[7]).strip() else "",
188
+ approved,
189
+ ))))
190
+
191
  msg = (
192
  f"Submit Review received.\n\n"
193
  f"Approved topics: {len(approved)}\n"
194
  f"Rejected topics: {len(rejected)}\n\n"
195
  f"Theme groupings (RENAME TO β†’ [topic_ids]):\n{theme_map_str}\n\n"
196
+ f"Researcher reasoning:\n"
197
+ + ("\n".join(reasoning_lines) if reasoning_lines else " (no reasoning provided)")
 
 
 
198
  + "\n\nPlease proceed to the next phase based on these decisions."
199
  )
200
  return msg
 
406
  demo.launch(
407
  server_name="0.0.0.0",
408
  server_port=7860,
409
+ ssr_mode=False,
410
  share=False,
411
  theme=gr.themes.Base(
412
  primary_hue="emerald",