Source code for pycaps.io.SSEFModelGrid

from ModelGrid import ModelGrid
from glob import glob
import pandas as pd
import numpy as np
import os


[docs]class SSEFModelGrid(ModelGrid): """ Extension of ModelGrid to the CAPS Storm-Scale Ensemble Forecast system. 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.path = path self.member = member forecast_hours = np.arange((start_date - run_date).total_seconds() / 3600, (end_date - run_date).total_seconds() / 3600 + 1) if single_step: full_path = self.path + "/".join([member, run_date.strftime("%Y%m%d"), "0000Z", "data2d"]) + "/" else: full_path = self.path + "/".join([member, run_date.strftime("%Y%m%d")]) + "/" potential_filenames = [] if single_step: for hour in forecast_hours: potential_filenames.append("{0}ar{1}00.net{2}{3:06d}".format(full_path, run_date.strftime("%Y%m%d"), variable.ljust(6,"_"), int(hour) * 3600)) else: potential_filenames.append("{0}ssef_{1}_{2}_{3}.nc".format(full_path, self.member, run_date.strftime("%Y%m%d"), variable)) filenames = [] for filename in potential_filenames: if os.access(filename, os.R_OK): filenames.append(filename) super(SSEFModelGrid, self).__init__(filenames, run_date, start_date, end_date, variable) return