euler314 commited on
Commit
8ef7489
·
verified ·
1 Parent(s): 70b560e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +25 -24
app.py CHANGED
@@ -859,14 +859,14 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
859
  - **TSNE Cluster**: Perform t-SNE clustering on WP storm routes using raw merged typhoon+ONI data with detailed error management.
860
  Mean routes and evolving curves (wind and pressure vs. normalized route index) are computed.
861
  """)
862
-
863
  with gr.Tab("Track Visualization"):
864
  with gr.Row():
865
  start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
866
- start_month = gr.Dropdown(label="Start Month", choices=list(range(1,13)), value=1)
867
  end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
868
- end_month = gr.Dropdown(label="End Month", choices=list(range(1,13)), value=6)
869
- enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all','El Nino','La Nina','Neutral'], value='all')
870
  typhoon_search = gr.Textbox(label="Typhoon Search")
871
  analyze_btn = gr.Button("Generate Tracks")
872
  tracks_plot = gr.Plot(label="Typhoon Tracks", elem_id="tracks_plot")
@@ -878,10 +878,10 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
878
  with gr.Tab("Wind Analysis"):
879
  with gr.Row():
880
  wind_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
881
- wind_start_month = gr.Dropdown(label="Start Month", choices=list(range(1,13)), value=1)
882
  wind_end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
883
- wind_end_month = gr.Dropdown(label="End Month", choices=list(range(1,13)), value=6)
884
- wind_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all','El Nino','La Nina','Neutral'], value='all')
885
  wind_typhoon_search = gr.Textbox(label="Typhoon Search")
886
  wind_analyze_btn = gr.Button("Generate Wind Analysis")
887
  wind_scatter = gr.Plot(label="Wind Speed vs ONI")
@@ -893,10 +893,10 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
893
  with gr.Tab("Pressure Analysis"):
894
  with gr.Row():
895
  pressure_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
896
- pressure_start_month = gr.Dropdown(label="Start Month", choices=list(range(1,13)), value=1)
897
  pressure_end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
898
- pressure_end_month = gr.Dropdown(label="End Month", choices=list(range(1,13)), value=6)
899
- pressure_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all','El Nino','La Nina','Neutral'], value='all')
900
  pressure_typhoon_search = gr.Textbox(label="Typhoon Search")
901
  pressure_analyze_btn = gr.Button("Generate Pressure Analysis")
902
  pressure_scatter = gr.Plot(label="Pressure vs ONI")
@@ -908,10 +908,10 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
908
  with gr.Tab("Longitude Analysis"):
909
  with gr.Row():
910
  lon_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
911
- lon_start_month = gr.Dropdown(label="Start Month", choices=list(range(1,13)), value=1)
912
  lon_end_year = gr.Number(label="End Year", value=2000, minimum=1900, maximum=2024, step=1)
913
- lon_end_month = gr.Dropdown(label="End Month", choices=list(range(1,13)), value=6)
914
- lon_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all','El Nino','La Nina','Neutral'], value='all')
915
  lon_typhoon_search = gr.Textbox(label="Typhoon Search (Optional)")
916
  lon_analyze_btn = gr.Button("Generate Longitude Analysis")
917
  regression_plot = gr.Plot(label="Longitude vs ONI")
@@ -922,13 +922,13 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
922
  outputs=[regression_plot, slopes_text, lon_regression_results])
923
 
924
  with gr.Tab("Tropical Cyclone Path Animation"):
925
- # Basin selection removed. Always use All Basins.
926
  with gr.Row():
927
- year_dropdown = gr.Dropdown(label="Year", choices=[str(y) for y in range(1950,2025)], value="2000")
928
- # Remove basin dropdown and set it internally to "all"
 
929
  with gr.Row():
930
  typhoon_dropdown = gr.Dropdown(label="Tropical Cyclone")
931
- standard_dropdown = gr.Dropdown(label="Classification Standard", choices=['atlantic','taiwan'], value='atlantic')
932
  animate_btn = gr.Button("Generate Animation")
933
  path_video = gr.Video(label="Tropical Cyclone Path Animation", format="mp4", interactive=False, elem_id="path_video")
934
  animation_info = gr.Markdown("""
@@ -940,20 +940,20 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
940
  5. The animation displays the storm track on a free stock world map (centered at 180°) with a dynamic sidebar.
941
  The sidebar shows the storm name and basin.
942
  """)
 
943
  year_dropdown.change(fn=update_typhoon_options_anim, inputs=[year_dropdown, gr.State("dummy")], outputs=typhoon_dropdown)
944
  animate_btn.click(fn=simplified_track_video,
945
- inputs=[year_dropdown, "All Basins", typhoon_dropdown, standard_dropdown],
946
- outputs=path_video)
947
-
948
 
949
  with gr.Tab("TSNE Cluster"):
950
  with gr.Row():
951
  tsne_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
952
- tsne_start_month = gr.Dropdown(label="Start Month", choices=list(range(1,13)), value=1)
953
  tsne_end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
954
- tsne_end_month = gr.Dropdown(label="End Month", choices=list(range(1,13)), value=12)
955
- tsne_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all','El Nino','La Nina','Neutral'], value='all')
956
- tsne_season = gr.Dropdown(label="Season", choices=['all','summer','winter'], value='all')
957
  tsne_analyze_btn = gr.Button("Analyze")
958
  tsne_plot = gr.Plot(label="t-SNE Clusters")
959
  routes_plot = gr.Plot(label="Typhoon Routes with Mean Routes")
@@ -964,3 +964,4 @@ with gr.Blocks(title="Typhoon Analysis Dashboard") as demo:
964
  outputs=[tsne_plot, routes_plot, stats_plot, cluster_info])
965
 
966
  demo.launch(share=True)
 
 
859
  - **TSNE Cluster**: Perform t-SNE clustering on WP storm routes using raw merged typhoon+ONI data with detailed error management.
860
  Mean routes and evolving curves (wind and pressure vs. normalized route index) are computed.
861
  """)
862
+
863
  with gr.Tab("Track Visualization"):
864
  with gr.Row():
865
  start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
866
+ start_month = gr.Dropdown(label="Start Month", choices=list(range(1, 13)), value=1)
867
  end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
868
+ end_month = gr.Dropdown(label="End Month", choices=list(range(1, 13)), value=6)
869
+ enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all', 'El Nino', 'La Nina', 'Neutral'], value='all')
870
  typhoon_search = gr.Textbox(label="Typhoon Search")
871
  analyze_btn = gr.Button("Generate Tracks")
872
  tracks_plot = gr.Plot(label="Typhoon Tracks", elem_id="tracks_plot")
 
878
  with gr.Tab("Wind Analysis"):
879
  with gr.Row():
880
  wind_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
881
+ wind_start_month = gr.Dropdown(label="Start Month", choices=list(range(1, 13)), value=1)
882
  wind_end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
883
+ wind_end_month = gr.Dropdown(label="End Month", choices=list(range(1, 13)), value=6)
884
+ wind_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all', 'El Nino', 'La Nina', 'Neutral'], value='all')
885
  wind_typhoon_search = gr.Textbox(label="Typhoon Search")
886
  wind_analyze_btn = gr.Button("Generate Wind Analysis")
887
  wind_scatter = gr.Plot(label="Wind Speed vs ONI")
 
893
  with gr.Tab("Pressure Analysis"):
894
  with gr.Row():
895
  pressure_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
896
+ pressure_start_month = gr.Dropdown(label="Start Month", choices=list(range(1, 13)), value=1)
897
  pressure_end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
898
+ pressure_end_month = gr.Dropdown(label="End Month", choices=list(range(1, 13)), value=6)
899
+ pressure_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all', 'El Nino', 'La Nina', 'Neutral'], value='all')
900
  pressure_typhoon_search = gr.Textbox(label="Typhoon Search")
901
  pressure_analyze_btn = gr.Button("Generate Pressure Analysis")
902
  pressure_scatter = gr.Plot(label="Pressure vs ONI")
 
908
  with gr.Tab("Longitude Analysis"):
909
  with gr.Row():
910
  lon_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
911
+ lon_start_month = gr.Dropdown(label="Start Month", choices=list(range(1, 13)), value=1)
912
  lon_end_year = gr.Number(label="End Year", value=2000, minimum=1900, maximum=2024, step=1)
913
+ lon_end_month = gr.Dropdown(label="End Month", choices=list(range(1, 13)), value=6)
914
+ lon_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all', 'El Nino', 'La Nina', 'Neutral'], value='all')
915
  lon_typhoon_search = gr.Textbox(label="Typhoon Search (Optional)")
916
  lon_analyze_btn = gr.Button("Generate Longitude Analysis")
917
  regression_plot = gr.Plot(label="Longitude vs ONI")
 
922
  outputs=[regression_plot, slopes_text, lon_regression_results])
923
 
924
  with gr.Tab("Tropical Cyclone Path Animation"):
 
925
  with gr.Row():
926
+ year_dropdown = gr.Dropdown(label="Year", choices=[str(y) for y in range(1950, 2025)], value="2000")
927
+ # Create a hidden component for basin constant; always "All Basins"
928
+ basin_constant = gr.Textbox(value="All Basins", visible=False)
929
  with gr.Row():
930
  typhoon_dropdown = gr.Dropdown(label="Tropical Cyclone")
931
+ standard_dropdown = gr.Dropdown(label="Classification Standard", choices=['atlantic', 'taiwan'], value='atlantic')
932
  animate_btn = gr.Button("Generate Animation")
933
  path_video = gr.Video(label="Tropical Cyclone Path Animation", format="mp4", interactive=False, elem_id="path_video")
934
  animation_info = gr.Markdown("""
 
940
  5. The animation displays the storm track on a free stock world map (centered at 180°) with a dynamic sidebar.
941
  The sidebar shows the storm name and basin.
942
  """)
943
+ # Update typhoon dropdown using only year (ignore basin since it's fixed)
944
  year_dropdown.change(fn=update_typhoon_options_anim, inputs=[year_dropdown, gr.State("dummy")], outputs=typhoon_dropdown)
945
  animate_btn.click(fn=simplified_track_video,
946
+ inputs=[year_dropdown, basin_constant, typhoon_dropdown, standard_dropdown],
947
+ outputs=path_video)
 
948
 
949
  with gr.Tab("TSNE Cluster"):
950
  with gr.Row():
951
  tsne_start_year = gr.Number(label="Start Year", value=2000, minimum=1900, maximum=2024, step=1)
952
+ tsne_start_month = gr.Dropdown(label="Start Month", choices=list(range(1, 13)), value=1)
953
  tsne_end_year = gr.Number(label="End Year", value=2024, minimum=1900, maximum=2024, step=1)
954
+ tsne_end_month = gr.Dropdown(label="End Month", choices=list(range(1, 13)), value=12)
955
+ tsne_enso_phase = gr.Dropdown(label="ENSO Phase", choices=['all', 'El Nino', 'La Nina', 'Neutral'], value='all')
956
+ tsne_season = gr.Dropdown(label="Season", choices=['all', 'summer', 'winter'], value='all')
957
  tsne_analyze_btn = gr.Button("Analyze")
958
  tsne_plot = gr.Plot(label="t-SNE Clusters")
959
  routes_plot = gr.Plot(label="Typhoon Routes with Mean Routes")
 
964
  outputs=[tsne_plot, routes_plot, stats_plot, cluster_info])
965
 
966
  demo.launch(share=True)
967
+