euler314 commited on
Commit
4137f10
·
verified ·
1 Parent(s): 919234d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +41 -28
app.py CHANGED
@@ -1333,63 +1333,76 @@ def create_interface():
1333
  outputs=regression_results
1334
  )
1335
 
 
1336
  with gr.Tab("Typhoon Path Animation"):
1337
  with gr.Row():
1338
- # Get initial years from ibtracs right away
1339
- initial_years = sorted([year for year in range(1950, 2025) if ibtracs and year in ibtracs.data.keys()])
1340
- initial_year = initial_years[-1] if initial_years else 2024
1341
-
1342
  year_dropdown = gr.Dropdown(
1343
- choices=initial_years,
1344
- value=initial_year,
1345
  label="Year"
1346
  )
1347
 
1348
- # Initialize typhoons for the initial year
1349
- initial_typhoons = get_typhoons_for_year(initial_year)
1350
  typhoon_dropdown = gr.Dropdown(
1351
- choices=[name for name, _ in initial_typhoons],
1352
- value=initial_typhoons[0][1] if initial_typhoons else None,
1353
- label="Typhoon",
1354
- interactive=True
1355
  )
1356
-
1357
- standard_dropdown = gr.Dropdown(
1358
  choices=["atlantic", "taiwan"],
1359
  value="atlantic",
1360
  label="Classification Standard"
1361
  )
1362
 
1363
- # Update typhoon dropdown when year changes
1364
- def update_typhoon_dropdown(year):
1365
- if not year or ibtracs is None:
1366
- return []
 
 
 
 
 
1367
 
1368
- typhoons = get_typhoons_for_year(year)
 
 
 
 
 
 
 
1369
  if not typhoons:
1370
- return []
1371
 
1372
- # Return simple list for older Gradio versions
1373
  return [name for name, _ in typhoons]
1374
 
 
1375
  year_dropdown.change(
1376
- update_typhoon_dropdown,
1377
  inputs=year_dropdown,
1378
  outputs=typhoon_dropdown
1379
  )
1380
 
1381
- animation_button = gr.Button("Generate Animation")
 
1382
 
1383
- typhoon_animation = gr.Plot(label="Typhoon Path Animation")
 
1384
 
1385
- animation_button.click(
1386
  create_typhoon_path_animation,
1387
  inputs=[year_dropdown, typhoon_dropdown, standard_dropdown],
1388
- outputs=typhoon_animation
 
 
 
 
 
 
 
1389
  )
1390
 
1391
- return demo
1392
-
1393
  # Run the app
1394
  if __name__ == "__main__":
1395
  # For Hugging Face, use a simpler version without threading
 
1333
  outputs=regression_results
1334
  )
1335
 
1336
+
1337
  with gr.Tab("Typhoon Path Animation"):
1338
  with gr.Row():
1339
+ # Use default values first, we'll populate after data loads
 
 
 
1340
  year_dropdown = gr.Dropdown(
1341
+ choices=[2020, 2021, 2022, 2023, 2024],
1342
+ value=2023,
1343
  label="Year"
1344
  )
1345
 
 
 
1346
  typhoon_dropdown = gr.Dropdown(
1347
+ choices=["Select a year first"],
1348
+ label="Typhoon"
 
 
1349
  )
1350
+
1351
+ standard_dropdown = gr.Radio(
1352
  choices=["atlantic", "taiwan"],
1353
  value="atlantic",
1354
  label="Classification Standard"
1355
  )
1356
 
1357
+ # Function to populate year dropdown
1358
+ def populate_years():
1359
+ if ibtracs is None:
1360
+ return [2020, 2021, 2022, 2023, 2024]
1361
+
1362
+ available_years = []
1363
+ for year in range(1950, 2025):
1364
+ if year in ibtracs.data:
1365
+ available_years.append(year)
1366
 
1367
+ return sorted(available_years, reverse=True)
1368
+
1369
+ # Function to update typhoon dropdown when year changes
1370
+ def update_typhoons(year):
1371
+ if not year:
1372
+ return ["No typhoons available"]
1373
+
1374
+ typhoons = get_typhoons_for_year(int(year))
1375
  if not typhoons:
1376
+ return ["No typhoons available for this year"]
1377
 
 
1378
  return [name for name, _ in typhoons]
1379
 
1380
+ # Update typhoon dropdown when year changes
1381
  year_dropdown.change(
1382
+ update_typhoons,
1383
  inputs=year_dropdown,
1384
  outputs=typhoon_dropdown
1385
  )
1386
 
1387
+ # Add a "Generate" button
1388
+ generate_btn = gr.Button("Generate Typhoon Path")
1389
 
1390
+ # Display area for the typhoon animation
1391
+ path_plot = gr.Plot(label="Typhoon Path")
1392
 
1393
+ generate_btn.click(
1394
  create_typhoon_path_animation,
1395
  inputs=[year_dropdown, typhoon_dropdown, standard_dropdown],
1396
+ outputs=path_plot
1397
+ )
1398
+
1399
+ # Add a "Load Years" button
1400
+ gr.Button("Load Available Years").click(
1401
+ populate_years,
1402
+ inputs=None,
1403
+ outputs=year_dropdown
1404
  )
1405
 
 
 
1406
  # Run the app
1407
  if __name__ == "__main__":
1408
  # For Hugging Face, use a simpler version without threading