To run this, just create a virtualenv and install cpc.geofiles:
$ pip install cpc.geofiles
#!/usr/bin/env python | |
from cpc.geogrids import Geogrid | |
from cpc.geofiles.loading import load_ens_fcsts | |
# Needs to be a list - if you want a single date, put it within []s | |
issued_dates = ['20170105'] | |
# Use the range function, or a list - note that fhrs will have N digits, where N is the number of digits in the largest fhr | |
fhrs = range(390, 840+1, 6) | |
# Use the range function, or a list - note that fhrs will have N digits, where N is the number of digits in the largest member | |
members = range(20+1) | |
# Template of the full path to the data files - the following template vars are supported: | |
# - {{ yyyy }} <-- 4-digit year | |
# - {{ mm }} <-- 2-digit month | |
# - {{ dd }} <-- 2-digit day | |
# - {{ cc }} <-- 2-digit cycle | |
# - {{ fhr }} <-- N-digit forecast hour, where N is the number of digits in the largest fhr | |
file_template = '/path/to/data/{{ yyyy }}/{{ mm }}/{{ dd }}/00/gefs_{{ yyyy }}{{ mm }}{{ dd }}_00z_f{{ fhr }}_m{{ member }}.grb2' | |
# Binary, grib1 or grib2 | |
data_type = 'grib2' | |
# Another package cpc.geogrids has several pre-defined grids - this one is the 1-deg global grid | |
geogrid = Geogrid('1deg-global') | |
# Statistic to calculate over the forecast hour dimension (mean or sum) | |
fhr_stat = 'mean' | |
# Grib variable name | |
grib_var = 'TMP' | |
# Grib level name | |
grib_level = '2 m above ground' | |
# Whether to print out all the wgrib commands when loading the data | |
debug = True | |
# Load the ensemble forecast dataset | |
dataset = load_ens_fcsts(issued_dates, fhrs, members, file_template, data_type, geogrid, | |
grib_var=grib_var, grib_level=grib_level, debug=debug) | |
# The resulting dataset object will contain the following data attributes (access with dataset.X): | |
# | |
# - ens <-- full ensemble forecast - shape is (num_days, num_members, num_grid_points) | |
# - ens_mean <-- ensemble mean forecast - shape is (num_days, num_grid_points) | |
# - ens_spread <-- ensemble forecast spread - shape is (num_days, num_grid_points) | |
# | |
# and the following QC attributes: | |
# | |
# - dates_with_files_not_loaded | |
# - files_not_loaded | |
# - dates_loaded |