mattritchey commited on
Commit
c840faa
·
1 Parent(s): ecc3913

Upload 2 files

Browse files
Files changed (2) hide show
  1. app.py +65 -0
  2. requirements.txt +7 -0
app.py ADDED
@@ -0,0 +1,65 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Fri Jun 9 09:12:15 2023
4
+
5
+ @author: mritchey
6
+ """
7
+ import gradio as gr
8
+ from joblib import Parallel, delayed
9
+ import pandas as pd
10
+ import rioxarray
11
+ import xarray as xr
12
+ import numpy as np
13
+ from tqdm import tqdm
14
+
15
+ def get_rtma_data(date_time,var='GUST'):
16
+ dt=date_time.strftime('%Y%m%d%H%M')
17
+ date=dt[:8]
18
+ year,month,day,time=dt[:4],dt[4:6],dt[6:8],dt[8:]
19
+ url=f'https://mtarchive.geol.iastate.edu/{year}/{month}/{day}/grib2/ncep/RTMA/{date}{time}_{var}.grib2'
20
+ try:
21
+ ds_values = xr.open_rasterio(url).values
22
+ except:
23
+ ds_values=url
24
+ return ds_values
25
+
26
+
27
+ def get_rtma_values(date,time,days_head,variable):
28
+ start_date=pd.to_datetime(date+time)
29
+ end_date = start_date + pd.DateOffset(days=int(days_head))
30
+ hourly_range = pd.date_range(start=start_date, end=end_date, freq='H')
31
+
32
+ mat=Parallel(n_jobs=16)(delayed(get_rtma_data)(date_time,variable) for date_time in tqdm(hourly_range[:2]))
33
+ mat = [x for x in mat if isinstance(x, np.ndarray)]
34
+
35
+ mat_max=np.max(mat,axis=0)
36
+ mat_min=np.min(mat,axis=0)
37
+ mat_mean=np.mean(mat,axis=0)
38
+ mat_std=np.std(mat,axis=0)
39
+
40
+ return [mat_max,mat_min,mat_mean,mat_std]
41
+ # return [mat_max,mat_min]
42
+
43
+
44
+
45
+ with gr.Blocks(show_api=True) as demo:
46
+ date = gr.Textbox(label="Date",placeholder='20220927')
47
+ time = gr.Textbox(label="Time",placeholder='1200')
48
+ days_head = gr.Textbox(label="Days Ahead" ,placeholder=1)
49
+ variable = gr.Textbox(label="Variable",placeholder='GUST')
50
+ greet_btn = gr.Button("Get Matrix")
51
+ output = gr.Numpy(label="Max")
52
+ greet_btn.click(fn=get_rtma_values,
53
+ inputs=[date, time, days_head, variable],
54
+ outputs=output,
55
+ api_name="rtma range")
56
+
57
+
58
+
59
+ demo.launch()
60
+
61
+ # date='20220927'
62
+ # time='1200'
63
+ # days_head=1
64
+ # variable='GUST'
65
+ # get_rtma_values(date,time,days_head,variable)
requirements.txt ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
 
1
+ gradio==3.34.0
2
+ joblib==1.1.0
3
+ numpy==1.19.5
4
+ pandas==1.5.2
5
+ rioxarray==0.10.3
6
+ tqdm==4.65.0
7
+ xarray==2022.11.0