def main(): # Monthly means from diagnostics model_data_path = Path("/RECH2/huziy/BC-MH/bc_mh_044deg/Diagnostics") swe_obs_manager = SweDataManager(var_name="SWE") swe_obs_manager.get_daily_clim_fields_interpolated_to() pass
def get_seasonal_clim_obs_data(rconfig=None, vname="TT", bmp_info=None, season_to_months=None, obs_path=None): """ :param rconfig: :param vname: Corresponding model variable name i.e either TT or PR """ assert isinstance(rconfig, RunConfig) if season_to_months is None: season_to_months = DEFAULT_SEASON_TO_MONTHS if bmp_info is None: bmp_info = analysis.get_basemap_info_from_hdf( file_path=rconfig.data_path) obs_query_params = dict(start_year=rconfig.start_year, end_year=rconfig.end_year, lons_target=bmp_info.lons, lats_target=bmp_info.lats) # Calculate daily mean temperatures as T = (T(min) + T(max)) * 0.5 if vname == "TT": tmax_obs_manager = AnuSplinManager(variable="stmx", folder_path=obs_path) tmin_obs_manager = AnuSplinManager(variable="stmn", folder_path=obs_path) dates, vals_max = tmax_obs_manager.get_daily_clim_fields_interpolated_to( **obs_query_params) _, vals_min = tmin_obs_manager.get_daily_clim_fields_interpolated_to( **obs_query_params) daily_obs = (dates, (vals_min + vals_max) * 0.5) elif vname == "PR": pcp_obs_manager = AnuSplinManager(variable="pcp", folder_path=obs_path) daily_obs = pcp_obs_manager.get_daily_clim_fields_interpolated_to( **obs_query_params) # SWE elif vname == "I5": swe_manager = SweDataManager(var_name="SWE", path=obs_path) daily_obs = swe_manager.get_daily_clim_fields_interpolated_to( **obs_query_params) else: raise Exception("Unknown variable: {}".format(vname)) season_to_obs_data = OrderedDict() for season, months in season_to_months.items(): season_to_obs_data[season] = np.mean( [f for d, f in zip(*daily_obs) if d.month in months], axis=0) return season_to_obs_data
def get_seasonal_clim_obs_data(rconfig=None, vname="TT", bmp_info=None, season_to_months=None, obs_path=None): """ :param rconfig: :param vname: Corresponding model variable name i.e either TT or PR """ assert isinstance(rconfig, RunConfig) if season_to_months is None: season_to_months = DEFAULT_SEASON_TO_MONTHS if bmp_info is None: bmp_info = analysis.get_basemap_info_from_hdf(file_path=rconfig.data_path) obs_query_params = dict( start_year=rconfig.start_year, end_year=rconfig.end_year, lons_target=bmp_info.lons, lats_target=bmp_info.lats ) # Calculate daily mean temperatures as T = (T(min) + T(max)) * 0.5 if vname == "TT": tmax_obs_manager = AnuSplinManager(variable="stmx", folder_path=obs_path) tmin_obs_manager = AnuSplinManager(variable="stmn", folder_path=obs_path) dates, vals_max = tmax_obs_manager.get_daily_clim_fields_interpolated_to(**obs_query_params) _, vals_min = tmin_obs_manager.get_daily_clim_fields_interpolated_to(**obs_query_params) daily_obs = (dates, (vals_min + vals_max) * 0.5) elif vname == "PR": pcp_obs_manager = AnuSplinManager(variable="pcp", folder_path=obs_path) daily_obs = pcp_obs_manager.get_daily_clim_fields_interpolated_to(**obs_query_params) # SWE elif vname == "I5": swe_manager = SweDataManager(var_name="SWE", path=obs_path) daily_obs = swe_manager.get_daily_clim_fields_interpolated_to(**obs_query_params) else: raise Exception("Unknown variable: {}".format(vname)) season_to_obs_data = OrderedDict() for season, months in season_to_months.items(): season_to_obs_data[season] = np.mean([f for d, f in zip(*daily_obs) if d.month in months], axis=0) return season_to_obs_data