def main(): start_year = 1979 end_year = 2000 HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" sim_label_to_path = OrderedDict( [(HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples"), (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples")] ) var_name_list = ["TT", "PR", "LC", "HR", "HU", "AV", "I5", "AL"] season_to_months = commons.season_to_months vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm" } # ---> ----> avg_mask = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) vname = "LC" common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=avg_mask) hl_icefrac = get_area_avg_timeseries(sim_label_to_path[HL_LABEL], **common_params) nemo_icefrac = get_area_avg_timeseries(sim_label_to_path[NEMO_LABEL], **common_params)
def main(): start_year = 1979 end_year = 1981 HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" sim_label_to_path = OrderedDict([ (HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples" ), (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples" ) ]) var_name_list = ["TT", "LC", "HU", "AV", "AL"] vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY, "J8": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm", "J8": "pm" } # ---> ----> avg_mask = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) current_label = HL_LABEL vname_to_ts = OrderedDict() for vname in var_name_list: common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=avg_mask) ts = get_area_avg_timeseries(sim_label_to_path[current_label], **common_params) vname_to_ts[vname] = ts plot_utils.apply_plot_params(font_size=10, width_cm=20, height_cm=20) fig = plt.figure() gs = GridSpec(len(vname_to_ts), 1) row = 0 for vname, ts in vname_to_ts.items(): ax = fig.add_subplot(gs[row, 0]) ts.plot(lw=2, color="k", ax=ax) ax.set_ylabel(vname) row += 1 if not os.path.isdir(img_folder): os.mkdir(img_folder) fig.tight_layout() fig.savefig(os.path.join( img_folder, "{}_lakeand_air_props_ts_over_GL_{}-{}.png".format( current_label, start_year, end_year)), dpi=commons.dpi, transparent=True)
def main(): start_year = 1979 end_year = 1988 img_folder = "nemo_vs_hostetler_GL_extended_domain" # create the image folder if necessary img_folder_p = Path(img_folder) if not img_folder_p.is_dir(): img_folder_p.mkdir() HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" # Older, shorter [1971 - 1981], smaller domain simulations # sim_label_to_path = OrderedDict( # [(HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples"), # (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples")] # ) sim_label_to_path = OrderedDict([( HL_LABEL, "/RECH2/huziy/coupling/GL_440x260_0.1deg_GL_with_Hostetler/Samples_selected" ), (NEMO_LABEL, "/RECH2/huziy/coupling/coupled-GL-NEMO1h_30min/Samples")]) var_name_list = [ "TT", "PR", ] vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY, "J8": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm", "J8": "pm" } # ---> ----> nemo_lake_mask, mask_lons, mask_lats = get_nemo_lakes_mask( samples_dir=sim_label_to_path[NEMO_LABEL]) path_to_erai_data = "/RESCUE/skynet3_rech1/huziy/ERA-Interim_0.75_NEMO_pilot/" vname_to_ts_hl = OrderedDict() vname_to_ts_erai = OrderedDict() vname_to_ts_nemo = OrderedDict() for vname in var_name_list: common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=nemo_lake_mask, mask_lons2d=mask_lons, mask_lats2d=mask_lats) current_label = HL_LABEL vname_to_ts_hl[vname], _, _ = get_area_avg_timeseries( sim_label_to_path[current_label], file_per_var=True, **common_params) current_label = NEMO_LABEL vname_to_ts_nemo[vname], lons2d, lats2d = get_area_avg_timeseries( sim_label_to_path[current_label], **common_params) vname_to_ts_erai[vname] = get_area_avg_from_erai_data( start_year=start_year, end_year=end_year, var_folder=os.path.join(path_to_erai_data, vname), varname=vname, mask=nemo_lake_mask, mask_lons=lons2d, mask_lats=lats2d) plot_utils.apply_plot_params(font_size=12, width_cm=20, height_cm=20) fig = plt.figure() gs = GridSpec(len(vname_to_ts_hl), 1) plot_monthly_model_outputs = False for row, vname in enumerate(vname_to_ts_hl): ax = fig.add_subplot(gs[row, 0]) ax.set_ylabel(vname) coef = 1 coef_erai = 1 if vname == "PR": coef = 24 * 3600 * 1000 coef_erai = coef / 1000.0 # Already in mm/s plot_monthly_model_outputs = True ts = vname_to_ts_hl[vname].groupby(lambda d: datetime( d.year, d.month, 15 if plot_monthly_model_outputs else d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="b", label=HL_LABEL) ts = vname_to_ts_nemo[vname].groupby(lambda d: datetime( d.year, d.month, 15 if plot_monthly_model_outputs else d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="r", label=NEMO_LABEL) ts = vname_to_ts_erai[vname].groupby( lambda d: datetime(d.year, d.month, 15)).mean() * coef_erai ax.plot(ts.index, ts.values, lw=2, color="k", label="ERA-Interim") if row == 0: ax.legend(loc="lower right") ax.grid() fig.autofmt_xdate() fig.tight_layout() fig.savefig(os.path.join( img_folder, "{}-{}_validate_{}_{}_ts_with_erai.png".format(start_year, end_year, HL_LABEL, NEMO_LABEL)), transparent=True, dpi=400)
def main(): start_year = 1979 end_year = 1981 HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" # Older, shorter [1971 - 1981], smaller domain simulations sim_label_to_path = OrderedDict([ (HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples" ), (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples" ) ]) var_name_list = ["TT", "HU"] vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY, "J8": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm", "J8": "pm" } # ---> ----> avg_mask = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) # extend the mask dn = 40 marginx = dn // 2 marginy = dn // 2 nx_ext, ny_ext = [(n + dn) for n in avg_mask.shape] print([(n + dn) for n in avg_mask.shape]) avg_mask_ext = np.zeros((nx_ext, ny_ext), dtype=np.bool) avg_mask_ext[marginx:-marginx, marginy:-marginy] = avg_mask path_to_erai_data = "/RESCUE/skynet3_rech1/huziy/ERA-Interim_0.75_NEMO_pilot/" vname_to_ts_hl = OrderedDict() vname_to_ts_erai = OrderedDict() vname_to_ts_nemo = OrderedDict() for vname in var_name_list: common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=avg_mask) current_label = HL_LABEL vname_to_ts_hl[vname] = get_area_avg_timeseries( sim_label_to_path[current_label], **common_params) current_label = NEMO_LABEL vname_to_ts_nemo[vname] = get_area_avg_timeseries( sim_label_to_path[current_label], **common_params) vname_to_ts_erai[vname] = get_area_avg_from_erai_data( start_year=start_year, end_year=end_year, var_folder=os.path.join(os.path.join(path_to_erai_data, vname)), varname=vname, mask=avg_mask_ext) plot_utils.apply_plot_params(font_size=12, width_cm=20, height_cm=20) fig = plt.figure() gs = GridSpec(len(vname_to_ts_hl), 1) for row, vname in enumerate(vname_to_ts_hl): ax = fig.add_subplot(gs[row, 0]) ax.set_ylabel(vname) coef = 1 coef_erai = 1 # plot monthly means for precipitations if vname == "PR": coef = 24 * 3600 * 1000 coef_erai = coef / 1000.0 # Already in mm/s ts = vname_to_ts_hl[vname].groupby( lambda d: datetime(d.year, d.month, 15)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="b", label=HL_LABEL) ts = vname_to_ts_nemo[vname].groupby( lambda d: datetime(d.year, d.month, 15)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="r", label=NEMO_LABEL) else: ts = vname_to_ts_hl[vname].groupby( lambda d: datetime(d.year, d.month, d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="b", label=HL_LABEL) ts = vname_to_ts_nemo[vname].groupby( lambda d: datetime(d.year, d.month, d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="r", label=NEMO_LABEL) ts = vname_to_ts_erai[vname].groupby( lambda d: datetime(d.year, d.month, 15)).mean() * coef_erai ax.plot(ts.index, ts.values, lw=2, color="k", label="ERA-Interim") if row == 0: ax.legend() ax.grid() fig.autofmt_xdate() fig.tight_layout() fig.savefig(os.path.join( img_folder, "{}-{}_validate_{}_{}_ts_with_erai.png".format(start_year, end_year, HL_LABEL, NEMO_LABEL)), transparent=True, dpi=400)
def main(): start_year = 1979 end_year = 2000 HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" sim_label_to_path = OrderedDict([ (HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples" ), (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples" ) ]) var_name_list = ["TT", "PR", "LC", "HR", "HU", "AV", "I5", "AL"] season_to_months = commons.season_to_months vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm" } # ---> ----> avg_mask = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) vname = "LC" common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=avg_mask) hl_icefrac = get_area_avg_timeseries(sim_label_to_path[HL_LABEL], **common_params) nemo_icefrac = get_area_avg_timeseries(sim_label_to_path[NEMO_LABEL], **common_params)
def main(): start_year = 1979 end_year = 1981 HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" # Older, shorter [1971 - 1981], smaller domain simulations sim_label_to_path = OrderedDict( [(HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples"), (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples")] ) var_name_list = ["TT", "HU"] vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY, "J8": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm", "J8": "pm" } # ---> ----> avg_mask = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) # extend the mask dn = 40 marginx = dn // 2 marginy = dn // 2 nx_ext, ny_ext = [(n + dn) for n in avg_mask.shape] print([(n + dn) for n in avg_mask.shape]) avg_mask_ext = np.zeros((nx_ext, ny_ext), dtype=np.bool) avg_mask_ext[marginx:-marginx, marginy:-marginy] = avg_mask path_to_erai_data = "/RESCUE/skynet3_rech1/huziy/ERA-Interim_0.75_NEMO_pilot/" vname_to_ts_hl = OrderedDict() vname_to_ts_erai = OrderedDict() vname_to_ts_nemo = OrderedDict() for vname in var_name_list: common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=avg_mask) current_label = HL_LABEL vname_to_ts_hl[vname] = get_area_avg_timeseries(sim_label_to_path[current_label], **common_params) current_label = NEMO_LABEL vname_to_ts_nemo[vname] = get_area_avg_timeseries(sim_label_to_path[current_label], **common_params) vname_to_ts_erai[vname] = get_area_avg_from_erai_data(start_year=start_year, end_year=end_year, var_folder=os.path.join(os.path.join(path_to_erai_data, vname)), varname=vname, mask=avg_mask_ext) plot_utils.apply_plot_params(font_size=12, width_cm=20, height_cm=20) fig = plt.figure() gs = GridSpec(len(vname_to_ts_hl), 1) for row, vname in enumerate(vname_to_ts_hl): ax = fig.add_subplot(gs[row, 0]) ax.set_ylabel(vname) coef = 1 coef_erai = 1 # plot monthly means for precipitations if vname == "PR": coef = 24 * 3600 * 1000 coef_erai = coef / 1000.0 # Already in mm/s ts = vname_to_ts_hl[vname].groupby(lambda d: datetime(d.year, d.month, 15)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="b", label=HL_LABEL) ts = vname_to_ts_nemo[vname].groupby(lambda d: datetime(d.year, d.month, 15)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="r", label=NEMO_LABEL) else: ts = vname_to_ts_hl[vname].groupby(lambda d: datetime(d.year, d.month, d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="b", label=HL_LABEL) ts = vname_to_ts_nemo[vname].groupby(lambda d: datetime(d.year, d.month, d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="r", label=NEMO_LABEL) ts = vname_to_ts_erai[vname].groupby(lambda d: datetime(d.year, d.month, 15)).mean() * coef_erai ax.plot(ts.index, ts.values, lw=2, color="k", label="ERA-Interim") if row == 0: ax.legend() ax.grid() fig.autofmt_xdate() fig.tight_layout() fig.savefig(os.path.join(img_folder, "{}-{}_validate_{}_{}_ts_with_erai.png".format(start_year, end_year, HL_LABEL, NEMO_LABEL)), transparent=True, dpi=400)
def main(): start_year = 1979 end_year = 1981 HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" sim_label_to_path = OrderedDict( [(HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples"), (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples")] ) var_name_list = ["TT", "LC", "HU", "AV", "AL"] vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY, "J8":level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm", "J8": "pm" } # ---> ----> avg_mask = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) current_label = HL_LABEL vname_to_ts = OrderedDict() for vname in var_name_list: common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=avg_mask) ts = get_area_avg_timeseries(sim_label_to_path[current_label], **common_params) vname_to_ts[vname] = ts plot_utils.apply_plot_params(font_size=10, width_cm=20, height_cm=20) fig = plt.figure() gs = GridSpec(len(vname_to_ts), 1) row = 0 for vname, ts in vname_to_ts.items(): ax = fig.add_subplot(gs[row, 0]) ts.plot(lw=2, color="k", ax=ax) ax.set_ylabel(vname) row += 1 if not os.path.isdir(img_folder): os.mkdir(img_folder) fig.tight_layout() fig.savefig(os.path.join(img_folder, "{}_lakeand_air_props_ts_over_GL_{}-{}.png".format(current_label, start_year, end_year)), dpi=commons.dpi, transparent=True)
def main(): start_year = 1979 end_year = 1988 img_folder = "nemo_vs_hostetler_GL_extended_domain" # create the image folder if necessary img_folder_p = Path(img_folder) if not img_folder_p.is_dir(): img_folder_p.mkdir() HL_LABEL = "CRCM5_HL" NEMO_LABEL = "CRCM5_NEMO" # Older, shorter [1971 - 1981], smaller domain simulations # sim_label_to_path = OrderedDict( # [(HL_LABEL, "/RESCUE/skynet3_rech1/huziy/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl_oneway/Samples"), # (NEMO_LABEL, "/HOME/huziy/skynet3_rech1/CNRCWP/C5/2016/2-year-runs/coupled-GL+stfl/Samples")] # ) sim_label_to_path = OrderedDict( [(HL_LABEL, "/RECH2/huziy/coupling/GL_440x260_0.1deg_GL_with_Hostetler/Samples_selected"), (NEMO_LABEL, "/RECH2/huziy/coupling/coupled-GL-NEMO1h_30min/Samples")] ) var_name_list = ["TT", "PR" ] vname_to_level = { "TT": 1, "PR": -1, "SN": -1, "LC": -1, "HR": 1, "HU": 1, "AV": -1, "I5": -1, "AL": -1 } vname_to_level_kind = { "TT": level_kinds.HYBRID, "PR": level_kinds.ARBITRARY, "SN": level_kinds.ARBITRARY, "LC": level_kinds.ARBITRARY, "HR": level_kinds.HYBRID, "HU": level_kinds.HYBRID, "AV": level_kinds.ARBITRARY, "I5": level_kinds.ARBITRARY, "AL": level_kinds.ARBITRARY, "J8": level_kinds.ARBITRARY } vname_to_file_prefix = { "TT": "dm", "PR": "pm", "SN": "pm", "LC": "pm", "HR": "dm", "HU": "dm", "AV": "pm", "I5": "pm", "AL": "pm", "J8": "pm" } # ---> ----> nemo_lake_mask, mask_lons, mask_lats = get_nemo_lakes_mask(samples_dir=sim_label_to_path[NEMO_LABEL]) path_to_erai_data = "/RESCUE/skynet3_rech1/huziy/ERA-Interim_0.75_NEMO_pilot/" vname_to_ts_hl = OrderedDict() vname_to_ts_erai = OrderedDict() vname_to_ts_nemo = OrderedDict() for vname in var_name_list: common_params = dict(start_year=start_year, end_year=end_year, filename_prefix=vname_to_file_prefix[vname], level=vname_to_level[vname], level_kind=vname_to_level_kind[vname], varname=vname, mask=nemo_lake_mask, mask_lons2d=mask_lons, mask_lats2d=mask_lats) current_label = HL_LABEL vname_to_ts_hl[vname], _, _ = get_area_avg_timeseries(sim_label_to_path[current_label], file_per_var=True, **common_params) current_label = NEMO_LABEL vname_to_ts_nemo[vname], lons2d, lats2d = get_area_avg_timeseries(sim_label_to_path[current_label], **common_params) vname_to_ts_erai[vname] = get_area_avg_from_erai_data(start_year=start_year, end_year=end_year, var_folder=os.path.join(path_to_erai_data, vname), varname=vname, mask=nemo_lake_mask, mask_lons=lons2d, mask_lats=lats2d) plot_utils.apply_plot_params(font_size=12, width_cm=20, height_cm=20) fig = plt.figure() gs = GridSpec(len(vname_to_ts_hl), 1) plot_monthly_model_outputs = False for row, vname in enumerate(vname_to_ts_hl): ax = fig.add_subplot(gs[row, 0]) ax.set_ylabel(vname) coef = 1 coef_erai = 1 if vname == "PR": coef = 24 * 3600 * 1000 coef_erai = coef / 1000.0 # Already in mm/s plot_monthly_model_outputs = True ts = vname_to_ts_hl[vname].groupby(lambda d: datetime(d.year, d.month, 15 if plot_monthly_model_outputs else d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="b", label=HL_LABEL) ts = vname_to_ts_nemo[vname].groupby(lambda d: datetime(d.year, d.month, 15 if plot_monthly_model_outputs else d.day)).mean() * coef ax.plot(ts.index, ts.values, lw=2, color="r", label=NEMO_LABEL) ts = vname_to_ts_erai[vname].groupby(lambda d: datetime(d.year, d.month, 15)).mean() * coef_erai ax.plot(ts.index, ts.values, lw=2, color="k", label="ERA-Interim") if row == 0: ax.legend(loc="lower right") ax.grid() fig.autofmt_xdate() fig.tight_layout() fig.savefig(os.path.join(img_folder, "{}-{}_validate_{}_{}_ts_with_erai.png".format(start_year, end_year, HL_LABEL, NEMO_LABEL)), transparent=True, dpi=400)