Source code for pycaps.io.NCARModelGrid
from ModelGrid import ModelGrid
import numpy as np
from pandas import DatetimeIndex
from datetime import timedelta
[docs]class NCARModelGrid(ModelGrid):
"""
Extension of the ModelGrid class for interfacing with the NCAR ensemble.
Args:
member (str): Name of the ensemble member
run_date (datetime.datetime object): Date of the initial step of the ensemble run
start_date (datetime.datetime object): First time step extracted.
end_date (datetime.datetime object): Last time step extracted.
path (str): Path to model output files.
single_step (boolean (default=False)): Whether variable information is stored with each time step in a separate
file or one file containing all timesteps.
"""
def __init__(self, member, run_date, variable, start_date, end_date, path, single_step=False):
self.member = member
self.path = path
self.forecast_hours = np.arange((start_date - run_date).total_seconds() / 3600,
(end_date - run_date).total_seconds() / 3600 + 1, dtype=int)
filenames = []
if not single_step:
filenames.append("{0}{1}/{2}_surrogate_{1}.nc".format(self.path,
run_date.strftime("%Y%m%d%H"),
self.member))
else:
for hour in self.forecast_hours:
valid_time = run_date + timedelta(hours=hour)
filenames.append("{0}{1}/wrf_rundir/{2}/wrfout_d02_{3}:00:00".format(self.path,
run_date.strftime("%Y%m%d%H"),
self.member.replace("mem", "ens_"),
valid_time.strftime("%Y-%m-%d_%H")
))
#filenames.append("{0}{1}/post_rundir/{2}/fhr_{3:d}/WRFTWO{3:02d}.nc".format(self.path,
# run_date.strftime("%Y%m%d%H"),
# self.member.replace("mem", "mem_"),
# int(hour)))
print filenames
super(NCARModelGrid, self).__init__(filenames, run_date, start_date, end_date, variable)