Weather Data API
The permeabledt.download_HRRR_historical_forecast module exposes a single
helper class for working with HRRR accumulated precipitation data via the
herbie-data client. Install the optional
extras with:
pip install "permeabledt[weather]"
HRRRAccumulatedPrecipitationDownloader
Constructor
HRRRAccumulatedPrecipitationDownloader(lat, lon, timezone='US/Central')
Initialise the downloader with the location of interest.
lat,lon(float): Coordinates in decimal degrees.timezone(str): Local timezone identifier used when converting timestamps (defaults to US/Central).
Exploration helper
explore_precipitation_variables(sample_date=None, product='subh')
Inspect the GRIB inventory for accumulated-precipitation variables for a given
run. Prints matches for the requested date (defaults to 28 April 2024 06:00
UTC) and product ('subh' or 'sfc').
Download accumulated forecasts
download_date_range(start_date, end_date, forecast_hours=6)
Loop over model runs between the supplied start and end dates (inclusive) and collect accumulated precipitation data. For each run the helper attempts to download the subhourly product and falls back to the surface product if necessary.
Accepts either strings or
datetimeobjects forstart_date/end_date.Returns a list of pandas DataFrames (one per successful model run) with columns including
forecast_time,precipitation_mm,model_run, andforecast_time_local(converted to the configured timezone).
Persist downloads
save_to_csv(forecast_dataframes, output_dir='hrrr_accumulated')
Write the list of DataFrames returned by download_date_range to individual CSV
files. Filenames follow the pattern
hrrr_accumulated_YYYYMMDD_HHMM_UTC.csv based on the model run time.
Visual comparison
plot_comparison(comp, metrics, output_dir='hrrr_comparison', cumulative=False)
Create a matplotlib plot comparing observed rainfall (comp['obs']) with the
forecasted series (comp['fcst']). The metrics dictionary should contain the
MAE, RMSE, and bias values used for annotation. When cumulative=True, the
helper plots cumulative sums; otherwise it shows 15-minute increments. Figures
are saved under output_dir.
Forecast vs observation analysis
compare_with_observed(forecast_dir, observed, cumulative=False, plot=False, output_dir='plots_output')
Load previously saved forecast CSVs from forecast_dir, align them with an
observed rainfall DataFrame (date / rain columns), and compute performance
statistics. Optionally calls plot_comparison when plot=True.
Returns a tuple (metrics_list, all_comp_df) where metrics_list contains the
per-run MAE/RMSE/bias dictionaries and all_comp_df concatenates the
per-forecast comparison tables.