Vishwas1 commited on
Commit
933da9e
·
verified ·
1 Parent(s): 5542a6a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -11
app.py CHANGED
@@ -123,7 +123,6 @@ for _, row in DF.iterrows():
123
  period = row["period"]
124
  group = row["group"]
125
  z = int(row["Z"])
126
- # Skip rows with missing period or group
127
  if pd.isna(period) or group is None:
128
  continue
129
  period = int(period)
@@ -133,7 +132,7 @@ LAN = [int(z) for z in DF["Z"] if 57 <= int(z) <= 71]
133
  ACT = [int(z) for z in DF["Z"] if 89 <= int(z) <= 103]
134
 
135
  # -----------------------------
136
- # Plotting helpers (Matplotlib)
137
  # -----------------------------
138
  def plot_trend(trend_df: pd.DataFrame, prop_key: str, Z: int, symbol: str):
139
  fig, ax = plt.subplots()
@@ -227,39 +226,37 @@ def search_element(query: str):
227
  return element_info(query)
228
 
229
  # -----------------------------
230
- # UI
231
  # -----------------------------
232
  with gr.Blocks(title="Interactive Periodic Table") as demo:
233
  gr.Markdown("# 🧪 Interactive Periodic Table\nClick an element or search by symbol/name/atomic number.")
234
 
235
  with gr.Row():
236
- # Create the inspector FIRST so button clicks can target these components
237
  with gr.Column(scale=1):
238
  gr.Markdown("### Inspector")
239
  search = gr.Textbox(label="Search (symbol/name/Z)", placeholder="e.g., C, Iron, 79")
240
  info = gr.Textbox(label="Properties", lines=10, interactive=False)
241
  facts = gr.Markdown("Select an element to see fun facts.")
242
- trend = gr.Matplotlib()
243
 
244
  search.submit(search_element, inputs=[search], outputs=[info, facts, trend])
245
 
246
  gr.Markdown("### Trend heatmap")
247
  prop = gr.Dropdown(choices=[k for k, _ in NUMERIC_PROPS], value="electronegativity", label="Property")
248
- heat = gr.Matplotlib()
249
  prop.change(lambda k: plot_heatmap(k), inputs=[prop], outputs=[heat])
250
 
251
  # Initialize heatmap on load
252
  demo.load(lambda: plot_heatmap("electronegativity"), outputs=[heat])
253
 
254
- # Now build the grid of buttons
255
  with gr.Column(scale=2):
256
  gr.Markdown("### Main Table")
257
- # Headers (groups 1-18)
258
  with gr.Row():
259
  for g in range(1, 19):
260
  gr.Markdown(f"**{g}**")
261
 
262
- # Element grid
263
  for r in range(MAX_PERIOD):
264
  with gr.Row():
265
  for c in range(MAX_GROUP):
@@ -288,5 +285,3 @@ with gr.Blocks(title="Interactive Periodic Table") as demo:
288
 
289
  if __name__ == "__main__":
290
  demo.launch()
291
-
292
-
 
123
  period = row["period"]
124
  group = row["group"]
125
  z = int(row["Z"])
 
126
  if pd.isna(period) or group is None:
127
  continue
128
  period = int(period)
 
132
  ACT = [int(z) for z in DF["Z"] if 89 <= int(z) <= 103]
133
 
134
  # -----------------------------
135
+ # Plotting helpers (Matplotlib -> gr.Plot)
136
  # -----------------------------
137
  def plot_trend(trend_df: pd.DataFrame, prop_key: str, Z: int, symbol: str):
138
  fig, ax = plt.subplots()
 
226
  return element_info(query)
227
 
228
  # -----------------------------
229
+ # UI (compatible with Gradio 4.29.0)
230
  # -----------------------------
231
  with gr.Blocks(title="Interactive Periodic Table") as demo:
232
  gr.Markdown("# 🧪 Interactive Periodic Table\nClick an element or search by symbol/name/atomic number.")
233
 
234
  with gr.Row():
235
+ # Inspector first so buttons can target these outputs
236
  with gr.Column(scale=1):
237
  gr.Markdown("### Inspector")
238
  search = gr.Textbox(label="Search (symbol/name/Z)", placeholder="e.g., C, Iron, 79")
239
  info = gr.Textbox(label="Properties", lines=10, interactive=False)
240
  facts = gr.Markdown("Select an element to see fun facts.")
241
+ trend = gr.Plot()
242
 
243
  search.submit(search_element, inputs=[search], outputs=[info, facts, trend])
244
 
245
  gr.Markdown("### Trend heatmap")
246
  prop = gr.Dropdown(choices=[k for k, _ in NUMERIC_PROPS], value="electronegativity", label="Property")
247
+ heat = gr.Plot()
248
  prop.change(lambda k: plot_heatmap(k), inputs=[prop], outputs=[heat])
249
 
250
  # Initialize heatmap on load
251
  demo.load(lambda: plot_heatmap("electronegativity"), outputs=[heat])
252
 
253
+ # Grid of element buttons
254
  with gr.Column(scale=2):
255
  gr.Markdown("### Main Table")
 
256
  with gr.Row():
257
  for g in range(1, 19):
258
  gr.Markdown(f"**{g}**")
259
 
 
260
  for r in range(MAX_PERIOD):
261
  with gr.Row():
262
  for c in range(MAX_GROUP):
 
285
 
286
  if __name__ == "__main__":
287
  demo.launch()