Source code for ufs_plot_utils.dataset

[docs] class Dataset: def __init__(self, cfg): # ------------------------- # Top-level # ------------------------- self.name = cfg.get("name") self.data_kind = cfg.get("data_kind", "increment") self.data_model = cfg.get("data_model", "fv3") self.title = cfg.get("title") # ------------------------- # GEO (FLATTEN) # ------------------------- geo_cfg = cfg.get("geo", {}) or {} self.geo_path = geo_cfg.get("path") self.geo_filename = geo_cfg.get("filename") self.geo_file_type = geo_cfg.get("file_type", "file") # ------------------------- # Data block (FLATTEN HERE) # ------------------------- data_cfg = cfg.get("data", {}) self.path = data_cfg.get("path") self.filename = data_cfg.get("filename") self.file_type = data_cfg.get("file_type", "file") self.group = data_cfg.get("group") self.var_list = data_cfg.get("var_list", []) self.channels = data_cfg.get("channels", None) self.z_index = data_cfg.get("z_index") self.time_index = data_cfg.get("time_index", 0) # ------------------------- # Style (top-level) # ------------------------- self.colormap = cfg.get("colormap", {}) self.range = cfg.get("range", {}) # ------------------------- # Validation # ------------------------- if not self.filename: raise ValueError(f'''Dataset "{self.name}" missing filename''') if not self.var_list: raise ValueError(f'''Dataset "{self.name}" missing var_list''') if not self.path: raise ValueError(f'''Dataset "{self.path}" missing path''') if self.channels: if any(c < 1 for c in self.channels): raise ValueError("channels must be 1-based positive integers")