Spaces:
Sleeping
Sleeping
# -*- coding: utf-8 -*- | |
""" | |
Created on Fri Jun 9 09:12:15 2023 | |
@author: mritchey | |
""" | |
import gradio as gr | |
from joblib import Parallel, delayed | |
import pandas as pd | |
import rioxarray | |
import xarray as xr | |
import numpy as np | |
from tqdm import tqdm | |
def get_rtma_data(date_time,var='GUST'): | |
dt=date_time.strftime('%Y%m%d%H%M') | |
date=dt[:8] | |
year,month,day,time=dt[:4],dt[4:6],dt[6:8],dt[8:] | |
url=f'https://mtarchive.geol.iastate.edu/{year}/{month}/{day}/grib2/ncep/RTMA/{date}{time}_{var}.grib2' | |
try: | |
ds_values = xr.open_rasterio(url).values | |
except: | |
ds_values=url | |
return ds_values | |
def get_rtma_values(date,time,days_head,variable): | |
start_date=pd.to_datetime(date+time) | |
end_date = start_date + pd.DateOffset(days=int(days_head)) | |
hourly_range = pd.date_range(start=start_date, end=end_date, freq='H') | |
mat=Parallel(n_jobs=16)(delayed(get_rtma_data)(date_time,variable) for date_time in tqdm(hourly_range[:2])) | |
mat = [x[0] for x in mat if isinstance(x, np.ndarray)] | |
mat=np.array(mat) | |
mat_max=np.max(mat,axis=0) | |
# mat_min=np.min(mat,axis=0) | |
# mat_mean=np.mean(mat,axis=0) | |
# mat_std=np.std(mat,axis=0) | |
# return mat | |
# return [mat_max,mat_min,mat_mean,mat_std] | |
return mat_max | |
with gr.Blocks(show_api=True) as demo: | |
date = gr.Textbox(label="Date",placeholder='20220927') | |
time = gr.Textbox(label="Time",placeholder='1200') | |
days_head = gr.Textbox(label="Days Ahead" ,placeholder='1') | |
variable = gr.Textbox(label="Variable",placeholder='GUST') | |
greet_btn = gr.Button("Get Matrix") | |
output = gr.Numpy(label="Matrix") | |
greet_btn.click(fn=get_rtma_values, | |
inputs=[date, time, days_head, variable], | |
outputs=output, | |
api_name="rtma range") | |
demo.launch() | |
# date='20220927' | |
# time='1200' | |
# days_head=1 | |
# variable='GUST' | |
# # get_rtma_values(date,time,days_head,variable) |