From 8ba7e7dfe008c894097d6ff6b0525005fbda21a9 Mon Sep 17 00:00:00 2001 From: ShixuanZhang Date: Sun, 22 Sep 2024 12:38:56 -0500 Subject: [PATCH 01/17] Bug fix to failure of regional mean climate metrics Changes are made to mean_climate_driver.py to call the updated version of region_subset() function. Specifically, current mean_climate_driver.py passed three input parameters in to region_subset() to mask the data for regional mean climate calculation. However, the region_subset() in pcmdi_metrics.io library required 5 input parameters, leading to the failure of mean_climate_driver.py calculation. --- pcmdi_metrics/mean_climate/mean_climate_driver.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pcmdi_metrics/mean_climate/mean_climate_driver.py b/pcmdi_metrics/mean_climate/mean_climate_driver.py index a54672dc7..7675a3bbb 100755 --- a/pcmdi_metrics/mean_climate/mean_climate_driver.py +++ b/pcmdi_metrics/mean_climate/mean_climate_driver.py @@ -338,12 +338,18 @@ ds_ref_dict[region] = ds_ref_tmp else: ds_test_tmp = region_subset( - ds_test_tmp, regions_specs, region=region + ds_test_tmp, + region, + None, + regions_specs, ) ds_test_dict[region] = ds_test_tmp if region not in list(ds_ref_dict.keys()): ds_ref_dict[region] = region_subset( - ds_ref_tmp, regions_specs, region=region + ds_ref_tmp, + region, + None, + regions_specs, ) print("spatial subset done") From d09415ba29c09fc4736c9d4b1b324ba0ab558da4 Mon Sep 17 00:00:00 2001 From: ShixuanZhang Date: Sun, 22 Sep 2024 19:00:42 -0500 Subject: [PATCH 02/17] Modify read_json_mean_clim.py module to be consistent with the changes related to https://github.com/PCMDI/pcmdi_metrics/issues/1128 In previous commit, changes in mean_climate_driver.py were made to remove the forced unit conversion for pressure level. Accordingly, the forced unit change in read_json_mean_clim.py should be removed as well. Otherwise, the Metrics () fuction call to decode the metrics json files will return wrong variable names. --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index db361d036..0e1eb2a73 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -44,7 +44,18 @@ def read_mean_clim_json_files( dict_temp = json.load(fj) # e.g., load contents of precipitation json file var = dict_temp["Variable"]["id"] # e.g., 'pr' if "level" in list(dict_temp["Variable"].keys()): - var += "-" + str(int(dict_temp["Variable"]["level"] / 100.0)) # Pa to hPa + # defaul PCMDI prefers name convention for pressulre level variables with "name"-"pressure(hPa)" + # e.g. ua-200, zg-500 etc. In case the user used a pressure in Pa rather than hPa, we add a check + # with warning message and convert unit to hPa to be consistent with the default PCMDI setup + level = int(dict_temp["Variable"]["level"]) + if level > 1100: + print( + "Warning: level = {}hPa in data, I guess this should be Pa".format( + level + ) + ) + level = int(level / 100.0) + var += "-" + str(level) # always hPa results_dict[var] = dict_temp unit = extract_unit(var, results_dict[var]) if unit is not None: From a9c82275b8d3a9c40836ddb4146e6fa6620cd63e Mon Sep 17 00:00:00 2001 From: ShixuanZhang Date: Sun, 22 Sep 2024 12:38:56 -0500 Subject: [PATCH 03/17] Bug fix to failure of regional mean climate metrics Changes are made to mean_climate_driver.py to call the updated version of region_subset() function. Specifically, current mean_climate_driver.py passed three input parameters in to region_subset() to mask the data for regional mean climate calculation. However, the region_subset() in pcmdi_metrics.io library required 5 input parameters, leading to the failure of mean_climate_driver.py calculation. --- pcmdi_metrics/mean_climate/mean_climate_driver.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pcmdi_metrics/mean_climate/mean_climate_driver.py b/pcmdi_metrics/mean_climate/mean_climate_driver.py index a54672dc7..7675a3bbb 100755 --- a/pcmdi_metrics/mean_climate/mean_climate_driver.py +++ b/pcmdi_metrics/mean_climate/mean_climate_driver.py @@ -338,12 +338,18 @@ ds_ref_dict[region] = ds_ref_tmp else: ds_test_tmp = region_subset( - ds_test_tmp, regions_specs, region=region + ds_test_tmp, + region, + None, + regions_specs, ) ds_test_dict[region] = ds_test_tmp if region not in list(ds_ref_dict.keys()): ds_ref_dict[region] = region_subset( - ds_ref_tmp, regions_specs, region=region + ds_ref_tmp, + region, + None, + regions_specs, ) print("spatial subset done") From b31571c9487d6c9d0f002422236895d0e5a3de18 Mon Sep 17 00:00:00 2001 From: ShixuanZhang Date: Sun, 22 Sep 2024 19:00:42 -0500 Subject: [PATCH 04/17] Modify read_json_mean_clim.py module to be consistent with the changes related to https://github.com/PCMDI/pcmdi_metrics/issues/1128 In previous commit, changes in mean_climate_driver.py were made to remove the forced unit conversion for pressure level. Accordingly, the forced unit change in read_json_mean_clim.py should be removed as well. Otherwise, the Metrics () fuction call to decode the metrics json files will return wrong variable names. --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index db361d036..0e1eb2a73 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -44,7 +44,18 @@ def read_mean_clim_json_files( dict_temp = json.load(fj) # e.g., load contents of precipitation json file var = dict_temp["Variable"]["id"] # e.g., 'pr' if "level" in list(dict_temp["Variable"].keys()): - var += "-" + str(int(dict_temp["Variable"]["level"] / 100.0)) # Pa to hPa + # defaul PCMDI prefers name convention for pressulre level variables with "name"-"pressure(hPa)" + # e.g. ua-200, zg-500 etc. In case the user used a pressure in Pa rather than hPa, we add a check + # with warning message and convert unit to hPa to be consistent with the default PCMDI setup + level = int(dict_temp["Variable"]["level"]) + if level > 1100: + print( + "Warning: level = {}hPa in data, I guess this should be Pa".format( + level + ) + ) + level = int(level / 100.0) + var += "-" + str(level) # always hPa results_dict[var] = dict_temp unit = extract_unit(var, results_dict[var]) if unit is not None: From 8418b6a5ef993172ae0036e48f5dde5e89f1bf81 Mon Sep 17 00:00:00 2001 From: ShixuanZhang Date: Sun, 22 Sep 2024 19:40:46 -0500 Subject: [PATCH 05/17] Remove forced unit conversion in read_json_mean_clim.py Modify read_json_mean_clim.py module to be consistent with the changes related to https://github.com/PCMDI/pcmdi_metrics/issues/1128 In previous commit related to https://github.com/PCMDI/pcmdi_metrics/issues/1128, changes in mean_climate_driver.py were made to remove the forced unit conversion for pressure level. Accordingly, the forced unit change in read_json_mean_clim.py should be removed as well. Otherwise, the Metrics () fuction to decode the metrics json files will return wrong variable names. --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index db361d036..0e1eb2a73 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -44,7 +44,18 @@ def read_mean_clim_json_files( dict_temp = json.load(fj) # e.g., load contents of precipitation json file var = dict_temp["Variable"]["id"] # e.g., 'pr' if "level" in list(dict_temp["Variable"].keys()): - var += "-" + str(int(dict_temp["Variable"]["level"] / 100.0)) # Pa to hPa + # defaul PCMDI prefers name convention for pressulre level variables with "name"-"pressure(hPa)" + # e.g. ua-200, zg-500 etc. In case the user used a pressure in Pa rather than hPa, we add a check + # with warning message and convert unit to hPa to be consistent with the default PCMDI setup + level = int(dict_temp["Variable"]["level"]) + if level > 1100: + print( + "Warning: level = {}hPa in data, I guess this should be Pa".format( + level + ) + ) + level = int(level / 100.0) + var += "-" + str(level) # always hPa results_dict[var] = dict_temp unit = extract_unit(var, results_dict[var]) if unit is not None: From c1e20b2ada8d14e75ea18bcf3aaf0cf5fdddc9e2 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 16:51:28 -0700 Subject: [PATCH 06/17] clarify parameters --- pcmdi_metrics/io/regions.py | 38 ++++++++++++++----- .../mean_climate/mean_climate_driver.py | 10 ++--- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/pcmdi_metrics/io/regions.py b/pcmdi_metrics/io/regions.py index b8e4a9f1f..e402a5d56 100755 --- a/pcmdi_metrics/io/regions.py +++ b/pcmdi_metrics/io/regions.py @@ -84,32 +84,52 @@ def load_regions_specs() -> dict: def region_subset( ds: Union[xr.Dataset, xr.DataArray], region: str, - data_var: str = "variable", + data_var: str = None, regions_specs: dict = None, debug: bool = False, ) -> Union[xr.Dataset, xr.DataArray]: - """_summary_ + """ + Subset a dataset or data array based on a specified region. + + This function subsets an xarray Dataset or DataArray based on the latitude and longitude + coordinates defined for a given region. It handles different longitude conventions + and can optionally provide debug information. Parameters ---------- ds : Union[xr.Dataset, xr.DataArray] - _description_ + The input dataset or data array to be subsetted. region : str - _description_ + The name of the region to subset the data to. This should correspond to a key + in the regions_specs dictionary. data_var : str, optional - _description_, by default None + The name of the data variable if ds is a DataArray, by default None, which names DataArray as "variable" in the Dataset if DataArray has no name. regions_specs : dict, optional - _description_, by default None - debug: bool, optional - Turn on debug print, by default False + A dictionary containing the specifications for different regions. If None, + it will be loaded from a default source, by default None. + debug : bool, optional + If True, print debug information during the subsetting process, by default False. Returns ------- Union[xr.Dataset, xr.DataArray] - _description_ + The subsetted dataset or data array, matching the input type. + + Notes + ----- + This function first converts DataArrays to Datasets for processing, then converts + back if necessary. It handles both latitude and longitude subsetting based on the + region specifications, and can deal with different longitude conventions (0 to 360 + vs -180 to 180). + """ if isinstance(ds, xr.DataArray): is_dataArray = True + if data_var is None: + if ds.name is None: + data_var = "variable" + else: + data_var = ds.name ds = da_to_ds(ds, data_var) else: is_dataArray = False diff --git a/pcmdi_metrics/mean_climate/mean_climate_driver.py b/pcmdi_metrics/mean_climate/mean_climate_driver.py index 7675a3bbb..05f29b800 100755 --- a/pcmdi_metrics/mean_climate/mean_climate_driver.py +++ b/pcmdi_metrics/mean_climate/mean_climate_driver.py @@ -339,17 +339,15 @@ else: ds_test_tmp = region_subset( ds_test_tmp, - region, - None, - regions_specs, + region=region, + regions_specs=regions_specs, ) ds_test_dict[region] = ds_test_tmp if region not in list(ds_ref_dict.keys()): ds_ref_dict[region] = region_subset( ds_ref_tmp, - region, - None, - regions_specs, + region=region, + regions_specs=regions_specs, ) print("spatial subset done") From de52db8053f5419b5e554494081dc27fc40a7794 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:02:16 -0700 Subject: [PATCH 07/17] clean up --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index 0e1eb2a73..bcede55a7 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -50,16 +50,14 @@ def read_mean_clim_json_files( level = int(dict_temp["Variable"]["level"]) if level > 1100: print( - "Warning: level = {}hPa in data, I guess this should be Pa".format( - level - ) + f"Warning: level = {level} hPa in data, I guess this should be Pa" ) level = int(level / 100.0) - var += "-" + str(level) # always hPa + var = f"{var}-{str(level)}" # always hPa results_dict[var] = dict_temp unit = extract_unit(var, results_dict[var]) if unit is not None: - var_unit = var + " [" + unit + "]" + var_unit = f"{var} [{unit}]" else: var_unit = var var_list.append(var) From 1be5df3c50f0d6c4dacbcab7208e4ec2dd59f388 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:05:19 -0700 Subject: [PATCH 08/17] edit for warning message --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index bcede55a7..95fb7a039 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -50,7 +50,7 @@ def read_mean_clim_json_files( level = int(dict_temp["Variable"]["level"]) if level > 1100: print( - f"Warning: level = {level} hPa in data, I guess this should be Pa" + f"Warning: level is expected in hPa: level {level} looks like it is Pa, thus converting it to hPa by dividing it by 100." ) level = int(level / 100.0) var = f"{var}-{str(level)}" # always hPa From ea8151cf34e563246fc40a23056a6dae26768300 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:26:31 -0700 Subject: [PATCH 09/17] improve warning message --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index 95fb7a039..f761e8242 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -50,7 +50,7 @@ def read_mean_clim_json_files( level = int(dict_temp["Variable"]["level"]) if level > 1100: print( - f"Warning: level is expected in hPa: level {level} looks like it is Pa, thus converting it to hPa by dividing it by 100." + f"Warning: The provided level value {level} appears to be in Pa. It will be automatically converted to hPa by dividing by 100." ) level = int(level / 100.0) var = f"{var}-{str(level)}" # always hPa From 50a4cdd07e8fd1970ef9bb3bd4b06d265a9d56e7 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:48:49 -0700 Subject: [PATCH 10/17] update demo notebooks to the latest --- .../Demo/Demo_1a_compute_climatologies.ipynb | 131 +- doc/jupyter/Demo/Demo_1b_mean_climate.ipynb | 2631 +++++++++-------- 2 files changed, 1498 insertions(+), 1264 deletions(-) diff --git a/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb b/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb index e5c1f7526..9f52864d9 100644 --- a/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb +++ b/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb @@ -82,10 +82,10 @@ "end = '2018-12'\n", "\n", "# INPUT DATASET - CAN BE MODEL OR OBSERVATIONS\n", - "infile = 'demo_data/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc'\n", + "infile = 'demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc'\n", "\n", "# DIRECTORY WHERE TO PUT RESULTS\n", - "outfile = 'demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc'\n", + "outfile = 'demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc'\n", "\n" ] } @@ -115,25 +115,26 @@ "text": [ "start and end are 2003-01 2018-12\n", "variable list: ['rlut']\n", - "infilename is rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "outdir is None\n", + "ver: v20240923\n", + "var: rlut\n", + "infile: demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "outfile: demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outfilename: None\n", + "outpath: None\n", + "ver: v20240923\n", + "infilename: rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "type(d): \n", + "atts: {'Conventions': 'CF-1.7 ODS-2.1', 'activity_id': 'obs4MIPs', 'contact': 'PCMDI (pcmdi-metrics@llnl.gov)', 'creation_date': '2021-07-27T18:20:26Z', 'curation_provenance': 'work-in-progress', 'data_specs_version': '2.1.0', 'external_variables': 'areacella', 'frequency': 'mon', 'further_info_url': 'https://furtherinfo.es-doc.org/CMIP6.NASA-LaRC.CERES-EBAF-4-1.experiment_idsub_experiment_idPCMDI', 'grid': '1x1 degree latitude x longitude', 'grid_label': 'gn', 'history': '2021-07-27T18:20:26Z; CMOR rewrote data to be consistent with obs4MIPs, and CF-1.7 ODS-2.1 standards', 'institution': 'NASA-LaRC (Langley Research Center) Hampton, Va', 'institution_id': 'NASA-LaRC', 'mip_era': 'CMIP6', 'nominal_resolution': '100 km', 'product': 'observations', 'realm': 'atmos', 'release_year': '2019', 'source': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_description': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_id': 'CERES-EBAF-4-1', 'source_label': 'CERES-EBAF-4-1', 'source_name': 'CERES-EBAF4-1', 'source_type': 'satellite_blended', 'source_version_number': '4.1', 'table_id': 'obs4MIPs_Amon', 'table_info': 'Creation Date:(18 November 2020) MD5:d8a4a72de798e86a999881bdaeb1809e', 'title': 'CERES prepared for obs4MIPs (ODS-v2.1.0)', 'tracking_id': 'hdl:21.14102/d1afa116-4801-4801-b302-43c49b5bb7dc', 'variable_id': 'rlut', 'variant_info': 'Best Estimate', 'variant_label': 'PCMDI', 'license': 'Data in this file processed for obs4MIPs by PCMDI and is for research purposes only.', 'cmor_version': '3.6.1'}\n", + "outdir: demo_output_tmp/climo\n", "start_yr_str is 2003\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "(12, 180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n" + "start_mo_str is 01\n", + "end_yr_str is 2018\n", + "end_mo_str is 12\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20240923.nc\n" ] } ], @@ -172,25 +173,40 @@ "text": [ "start and end are 2003-01 2018-12\n", "variable list: ['rlut']\n", - "infilename is rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "outdir is None\n", + "ver: v20240923\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/mambaforge/envs/pmp_devel_20240425/lib/python3.10/site-packages/pcmdi_metrics/io/string_constructor.py:43: UserWarning: Keyword 'variable' not provided for filling the template.\n", + " warnings.warn(f\"Keyword '{k}' not provided for filling the template.\")\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "var: rlut\n", + "infile: demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "outfile: demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outfilename: None\n", + "outpath: None\n", + "ver: v20240923\n", + "infilename: rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "type(d): \n", + "atts: {'Conventions': 'CF-1.7 ODS-2.1', 'activity_id': 'obs4MIPs', 'contact': 'PCMDI (pcmdi-metrics@llnl.gov)', 'creation_date': '2021-07-27T18:20:26Z', 'curation_provenance': 'work-in-progress', 'data_specs_version': '2.1.0', 'external_variables': 'areacella', 'frequency': 'mon', 'further_info_url': 'https://furtherinfo.es-doc.org/CMIP6.NASA-LaRC.CERES-EBAF-4-1.experiment_idsub_experiment_idPCMDI', 'grid': '1x1 degree latitude x longitude', 'grid_label': 'gn', 'history': '2021-07-27T18:20:26Z; CMOR rewrote data to be consistent with obs4MIPs, and CF-1.7 ODS-2.1 standards', 'institution': 'NASA-LaRC (Langley Research Center) Hampton, Va', 'institution_id': 'NASA-LaRC', 'mip_era': 'CMIP6', 'nominal_resolution': '100 km', 'product': 'observations', 'realm': 'atmos', 'release_year': '2019', 'source': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_description': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_id': 'CERES-EBAF-4-1', 'source_label': 'CERES-EBAF-4-1', 'source_name': 'CERES-EBAF4-1', 'source_type': 'satellite_blended', 'source_version_number': '4.1', 'table_id': 'obs4MIPs_Amon', 'table_info': 'Creation Date:(18 November 2020) MD5:d8a4a72de798e86a999881bdaeb1809e', 'title': 'CERES prepared for obs4MIPs (ODS-v2.1.0)', 'tracking_id': 'hdl:21.14102/d1afa116-4801-4801-b302-43c49b5bb7dc', 'variable_id': 'rlut', 'variant_info': 'Best Estimate', 'variant_label': 'PCMDI', 'license': 'Data in this file processed for obs4MIPs by PCMDI and is for research purposes only.', 'cmor_version': '3.6.1'}\n", + "outdir: demo_output_tmp/climo\n", "start_yr_str is 2003\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "(12, 180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n" + "start_mo_str is 01\n", + "end_yr_str is 2018\n", + "end_mo_str is 12\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20240923.nc\n" ] } ], @@ -231,25 +247,26 @@ "text": [ "start and end are 2003-01 2018-12\n", "variable list: ['rlut']\n", - "infilename is rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "outdir is demo_output/climo/\n", + "ver: v20240923\n", + "var: rlut\n", + "infile: demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "outfile: demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outfilename: rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outpath: demo_output_tmp/climo/\n", + "ver: v20240923\n", + "infilename: rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "type(d): \n", + "atts: {'Conventions': 'CF-1.7 ODS-2.1', 'activity_id': 'obs4MIPs', 'contact': 'PCMDI (pcmdi-metrics@llnl.gov)', 'creation_date': '2021-07-27T18:20:26Z', 'curation_provenance': 'work-in-progress', 'data_specs_version': '2.1.0', 'external_variables': 'areacella', 'frequency': 'mon', 'further_info_url': 'https://furtherinfo.es-doc.org/CMIP6.NASA-LaRC.CERES-EBAF-4-1.experiment_idsub_experiment_idPCMDI', 'grid': '1x1 degree latitude x longitude', 'grid_label': 'gn', 'history': '2021-07-27T18:20:26Z; CMOR rewrote data to be consistent with obs4MIPs, and CF-1.7 ODS-2.1 standards', 'institution': 'NASA-LaRC (Langley Research Center) Hampton, Va', 'institution_id': 'NASA-LaRC', 'mip_era': 'CMIP6', 'nominal_resolution': '100 km', 'product': 'observations', 'realm': 'atmos', 'release_year': '2019', 'source': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_description': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_id': 'CERES-EBAF-4-1', 'source_label': 'CERES-EBAF-4-1', 'source_name': 'CERES-EBAF4-1', 'source_type': 'satellite_blended', 'source_version_number': '4.1', 'table_id': 'obs4MIPs_Amon', 'table_info': 'Creation Date:(18 November 2020) MD5:d8a4a72de798e86a999881bdaeb1809e', 'title': 'CERES prepared for obs4MIPs (ODS-v2.1.0)', 'tracking_id': 'hdl:21.14102/d1afa116-4801-4801-b302-43c49b5bb7dc', 'variable_id': 'rlut', 'variant_info': 'Best Estimate', 'variant_label': 'PCMDI', 'license': 'Data in this file processed for obs4MIPs by PCMDI and is for research purposes only.', 'cmor_version': '3.6.1'}\n", + "outdir: demo_output_tmp/climo/\n", "start_yr_str is 2003\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "(12, 180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n" + "start_mo_str is 01\n", + "end_yr_str is 2018\n", + "end_mo_str is 12\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20240923.nc\n" ] } ], @@ -278,7 +295,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.10.10" } }, "nbformat": 4, diff --git a/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb b/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb index eb515380c..3661d9bd8 100644 --- a/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb +++ b/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb @@ -94,14 +94,14 @@ "regions = {\"rlut\": [\"Global\"]}\n", "\n", "# ROOT PATH FOR MODELS CLIMATOLOGIES\n", - "test_data_path = 'demo_data/CMIP5_demo_clims/'\n", + "test_data_path = 'demo_data_tmp/CMIP5_demo_clims/'\n", "# ROOT PATH FOR OBSERVATIONS\n", "# Note that atm/mo/%(variable)/ac will be added to this\n", - "reference_data_path = 'demo_data/obs4MIPs_PCMDI_clims'\n", + "reference_data_path = 'demo_data_tmp/obs4MIPs_PCMDI_clims'\n", "\n", "# DIRECTORY WHERE TO PUT RESULTS\n", "metrics_output_path = os.path.join(\n", - " 'demo_output',\n", + " 'demo_output_tmp',\n", " \"%(case_id)\")\n", "\n" ] @@ -131,68 +131,38 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:38:41,260 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:38:41,260 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:14,932 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:14,932 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:14,958 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:39:14,958 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:50,007 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:50,007 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:55,027 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:39:55,027 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:40::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:40:29,591 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:40:29,591 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:40:29,627 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:40:29,627 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:41:05,136 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:41:05,136 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "INFO::2023-11-09 16:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", - "2023-11-09 16:41:05,142 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", - "2023-11-09 16:41:05,142 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: basicTest \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/basicTest \n", - " diagnostics_output_path: demo_output/basicTest \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: basicTest\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/basicTest\n", + "diagnostics_output_path: demo_output_tmp/basicTest\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -200,68 +170,128 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:30:18,896 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:30:18,896 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384451737888808\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.770012023689812\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.044682445768467 7.9637213813349925\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9693780836555635\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.443886637144088\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384446642039474\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.770267763900403\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.04383979899538 7.962870239960437\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9693832697582581\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:30::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:30:56,106 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:30:56,106 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:30:56,389 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:30:56,389 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635463134324031\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.331106438822097\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.610248337339145 9.539550989529207\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518659641205703\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.581863266319667\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635460184347601\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.33676419779921\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.611035481689909 9.540344002879925\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518562007048922\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:31::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:31:34,467 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:31:34,467 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -269,66 +299,129 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:31:35,863 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:31:35,863 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365878854524063\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.763493973471603\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.033820554038556 7.953014565127818\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9694728084795681\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.441474434051779\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365873707975822\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.76358422001215\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.032983607315776 7.9521691873316795\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9694779269200444\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:32::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:12,991 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:12,991 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:32:13,222 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:32:13,222 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1654036017688774\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.333692053819536\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.608637289548378 9.537701243333409\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518850115349531\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.592931277171877\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.165403311841126\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.339387410014902\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.609441449405928 9.538511418995654\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518750636449926\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:32::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:46,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:46,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "INFO::2024-09-23 17:33::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", + "2024-09-23 17:33:02,224 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", + "2024-09-23 17:33:02,224 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -387,44 +480,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.969\",\n", - " \"djf\": \"0.96\",\n", - " \"mam\": \"0.95\",\n", - " \"jja\": \"0.96\",\n", - " \"son\": \"0.96\",\n", + " \"djf\": \"0.962\",\n", + " \"mam\": \"0.951\",\n", + " \"jja\": \"0.961\",\n", + " \"son\": \"0.963\",\n", " \"CalendarMonths\": [\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.93\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.95\"\n", + " \"0.956\",\n", + " \"0.959\",\n", + " \"0.950\",\n", + " \"0.946\",\n", + " \"0.931\",\n", + " \"0.945\",\n", + " \"0.953\",\n", + " \"0.957\",\n", + " \"0.959\",\n", + " \"0.951\",\n", + " \"0.946\",\n", + " \"0.945\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", " \"ann\": \"5.770\",\n", - " \"djf\": \"7.157\",\n", - " \"mam\": \"7.247\",\n", - " \"jja\": \"7.517\",\n", - " \"son\": \"6.448\",\n", + " \"djf\": \"7.156\",\n", + " \"mam\": \"7.245\",\n", + " \"jja\": \"7.515\",\n", + " \"son\": \"6.443\",\n", " \"CalendarMonths\": [\n", + " \"7.772\",\n", + " \"7.634\",\n", + " \"8.009\",\n", " \"7.774\",\n", - " \"7.641\",\n", - " \"8.017\",\n", - " \"7.776\",\n", " \"7.820\",\n", - " \"7.989\",\n", - " \"8.508\",\n", - " \"8.006\",\n", - " \"7.362\",\n", - " \"7.296\",\n", - " \"7.280\",\n", - " \"7.719\"\n", + " \"7.995\",\n", + " \"8.502\",\n", + " \"8.003\",\n", + " \"7.360\",\n", + " \"7.288\",\n", + " \"7.277\",\n", + " \"7.714\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -470,102 +563,102 @@ " ]\n", " },\n", " \"rms_devzm\": {\n", - " \"ann\": \"5.808\"\n", + " \"ann\": \"5.807\"\n", " },\n", " \"rms_xy\": {\n", - " \"ann\": \"8.045\",\n", - " \"djf\": \"10.232\",\n", + " \"ann\": \"8.044\",\n", + " \"djf\": \"10.231\",\n", " \"mam\": \"10.775\",\n", - " \"jja\": \"10.443\",\n", - " \"son\": \"9.260\",\n", + " \"jja\": \"10.441\",\n", + " \"son\": \"9.257\",\n", " \"CalendarMonths\": [\n", " \"11.121\",\n", " \"10.901\",\n", - " \"11.602\",\n", - " \"11.489\",\n", + " \"11.603\",\n", + " \"11.490\",\n", " \"12.612\",\n", - " \"11.981\",\n", - " \"11.852\",\n", - " \"11.344\",\n", - " \"10.657\",\n", - " \"10.753\",\n", - " \"11.132\",\n", - " \"11.892\"\n", + " \"11.982\",\n", + " \"11.850\",\n", + " \"11.340\",\n", + " \"10.656\",\n", + " \"10.751\",\n", + " \"11.130\",\n", + " \"11.890\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"11.444\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"5.566\"\n", " },\n", " \"rmsc_xy\": {\n", - " \"ann\": \"7.964\",\n", - " \"djf\": \"10.094\",\n", - " \"mam\": \"10.684\",\n", - " \"jja\": \"10.407\",\n", - " \"son\": \"9.238\",\n", + " \"ann\": \"7.963\",\n", + " \"djf\": \"10.093\",\n", + " \"mam\": \"10.685\",\n", + " \"jja\": \"10.405\",\n", + " \"son\": \"9.235\",\n", " \"CalendarMonths\": [\n", " \"10.989\",\n", " \"10.834\",\n", - " \"11.539\",\n", + " \"11.541\",\n", " \"11.409\",\n", " \"12.509\",\n", " \"11.912\",\n", - " \"11.823\",\n", - " \"11.334\",\n", - " \"10.655\",\n", - " \"10.745\",\n", - " \"11.056\",\n", - " \"11.701\"\n", + " \"11.822\",\n", + " \"11.331\",\n", + " \"10.654\",\n", + " \"10.744\",\n", + " \"11.053\",\n", + " \"11.699\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.647\",\n", - " \"djf\": \"32.686\",\n", - " \"mam\": \"30.818\",\n", - " \"jja\": \"35.375\",\n", - " \"son\": \"31.289\",\n", + " \"ann\": \"29.649\",\n", + " \"djf\": \"32.688\",\n", + " \"mam\": \"30.820\",\n", + " \"jja\": \"35.377\",\n", + " \"son\": \"31.291\",\n", " \"CalendarMonths\": [\n", - " \"33.135\",\n", - " \"33.734\",\n", - " \"33.073\",\n", - " \"31.262\",\n", - " \"31.721\",\n", - " \"34.451\",\n", - " \"36.365\",\n", - " \"36.271\",\n", - " \"34.820\",\n", - " \"32.053\",\n", - " \"30.983\",\n", - " \"31.985\"\n", + " \"33.137\",\n", + " \"33.736\",\n", + " \"33.075\",\n", + " \"31.264\",\n", + " \"31.723\",\n", + " \"34.453\",\n", + " \"36.366\",\n", + " \"36.272\",\n", + " \"34.822\",\n", + " \"32.055\",\n", + " \"30.985\",\n", + " \"31.987\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.983\"\n", + " \"ann\": \"12.987\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.469\"\n", + " \"ann\": \"33.470\"\n", " },\n", " \"std_xy\": {\n", " \"ann\": \"31.966\",\n", - " \"djf\": \"36.191\",\n", + " \"djf\": \"36.189\",\n", " \"mam\": \"34.089\",\n", - " \"jja\": \"37.564\",\n", + " \"jja\": \"37.563\",\n", " \"son\": \"33.813\",\n", " \"CalendarMonths\": [\n", - " \"36.778\",\n", - " \"37.344\",\n", + " \"36.777\",\n", + " \"37.343\",\n", " \"36.641\",\n", - " \"34.890\",\n", + " \"34.891\",\n", " \"34.366\",\n", - " \"36.411\",\n", - " \"38.933\",\n", - " \"39.053\",\n", + " \"36.410\",\n", + " \"38.932\",\n", + " \"39.052\",\n", " \"37.396\",\n", " \"34.686\",\n", " \"33.932\",\n", - " \"35.562\"\n", + " \"35.561\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", @@ -606,44 +699,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.969\",\n", - " \"djf\": \"0.96\",\n", - " \"mam\": \"0.95\",\n", - " \"jja\": \"0.96\",\n", - " \"son\": \"0.96\",\n", + " \"djf\": \"0.962\",\n", + " \"mam\": \"0.950\",\n", + " \"jja\": \"0.961\",\n", + " \"son\": \"0.963\",\n", " \"CalendarMonths\": [\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.93\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.95\"\n", + " \"0.956\",\n", + " \"0.959\",\n", + " \"0.950\",\n", + " \"0.945\",\n", + " \"0.930\",\n", + " \"0.944\",\n", + " \"0.952\",\n", + " \"0.957\",\n", + " \"0.960\",\n", + " \"0.952\",\n", + " \"0.947\",\n", + " \"0.947\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", - " \"ann\": \"5.763\",\n", - " \"djf\": \"7.164\",\n", + " \"ann\": \"5.764\",\n", + " \"djf\": \"7.162\",\n", " \"mam\": \"7.307\",\n", - " \"jja\": \"7.560\",\n", - " \"son\": \"6.379\",\n", + " \"jja\": \"7.558\",\n", + " \"son\": \"6.375\",\n", " \"CalendarMonths\": [\n", - " \"7.812\",\n", - " \"7.649\",\n", - " \"8.087\",\n", - " \"7.828\",\n", - " \"7.843\",\n", - " \"8.028\",\n", - " \"8.551\",\n", - " \"8.058\",\n", + " \"7.811\",\n", + " \"7.642\",\n", + " \"8.079\",\n", + " \"7.827\",\n", + " \"7.844\",\n", + " \"8.034\",\n", + " \"8.546\",\n", + " \"8.056\",\n", " \"7.319\",\n", - " \"7.211\",\n", - " \"7.159\",\n", - " \"7.554\"\n", + " \"7.206\",\n", + " \"7.157\",\n", + " \"7.549\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -689,102 +782,102 @@ " ]\n", " },\n", " \"rms_devzm\": {\n", - " \"ann\": \"5.808\"\n", + " \"ann\": \"5.807\"\n", " },\n", " \"rms_xy\": {\n", - " \"ann\": \"8.034\",\n", - " \"djf\": \"10.240\",\n", + " \"ann\": \"8.033\",\n", + " \"djf\": \"10.239\",\n", " \"mam\": \"10.872\",\n", - " \"jja\": \"10.488\",\n", - " \"son\": \"9.202\",\n", + " \"jja\": \"10.486\",\n", + " \"son\": \"9.200\",\n", " \"CalendarMonths\": [\n", " \"11.139\",\n", - " \"10.909\",\n", - " \"11.669\",\n", - " \"11.580\",\n", + " \"10.910\",\n", + " \"11.670\",\n", + " \"11.581\",\n", " \"12.718\",\n", " \"12.062\",\n", - " \"11.913\",\n", - " \"11.353\",\n", - " \"10.565\",\n", - " \"10.660\",\n", - " \"11.013\",\n", - " \"11.727\"\n", + " \"11.912\",\n", + " \"11.349\",\n", + " \"10.564\",\n", + " \"10.658\",\n", + " \"11.011\",\n", + " \"11.725\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"11.441\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"5.551\"\n", " },\n", " \"rmsc_xy\": {\n", - " \"ann\": \"7.953\",\n", - " \"djf\": \"10.107\",\n", + " \"ann\": \"7.952\",\n", + " \"djf\": \"10.106\",\n", " \"mam\": \"10.791\",\n", - " \"jja\": \"10.452\",\n", - " \"son\": \"9.175\",\n", + " \"jja\": \"10.450\",\n", + " \"son\": \"9.172\",\n", " \"CalendarMonths\": [\n", " \"11.010\",\n", - " \"10.842\",\n", - " \"11.610\",\n", - " \"11.506\",\n", - " \"12.630\",\n", + " \"10.843\",\n", + " \"11.612\",\n", + " \"11.507\",\n", + " \"12.629\",\n", " \"11.998\",\n", - " \"11.885\",\n", - " \"11.340\",\n", - " \"10.562\",\n", - " \"10.647\",\n", - " \"10.930\",\n", - " \"11.546\"\n", + " \"11.884\",\n", + " \"11.336\",\n", + " \"10.561\",\n", + " \"10.645\",\n", + " \"10.928\",\n", + " \"11.545\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.644\",\n", - " \"djf\": \"32.736\",\n", - " \"mam\": \"30.775\",\n", - " \"jja\": \"35.361\",\n", - " \"son\": \"31.194\",\n", + " \"ann\": \"29.645\",\n", + " \"djf\": \"32.738\",\n", + " \"mam\": \"30.777\",\n", + " \"jja\": \"35.363\",\n", + " \"son\": \"31.196\",\n", " \"CalendarMonths\": [\n", - " \"33.142\",\n", - " \"33.727\",\n", - " \"32.912\",\n", - " \"31.203\",\n", - " \"31.767\",\n", - " \"34.483\",\n", - " \"36.342\",\n", - " \"36.157\",\n", - " \"34.665\",\n", - " \"31.899\",\n", - " \"30.965\",\n", - " \"32.014\"\n", + " \"33.145\",\n", + " \"33.729\",\n", + " \"32.914\",\n", + " \"31.205\",\n", + " \"31.768\",\n", + " \"34.484\",\n", + " \"36.344\",\n", + " \"36.158\",\n", + " \"34.666\",\n", + " \"31.901\",\n", + " \"30.967\",\n", + " \"32.016\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.976\"\n", + " \"ann\": \"12.980\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.418\"\n", + " \"ann\": \"33.420\"\n", " },\n", " \"std_xy\": {\n", " \"ann\": \"31.966\",\n", - " \"djf\": \"36.191\",\n", + " \"djf\": \"36.189\",\n", " \"mam\": \"34.089\",\n", - " \"jja\": \"37.564\",\n", + " \"jja\": \"37.563\",\n", " \"son\": \"33.813\",\n", " \"CalendarMonths\": [\n", - " \"36.778\",\n", - " \"37.344\",\n", + " \"36.777\",\n", + " \"37.343\",\n", " \"36.641\",\n", - " \"34.890\",\n", + " \"34.891\",\n", " \"34.366\",\n", - " \"36.411\",\n", - " \"38.933\",\n", - " \"39.053\",\n", + " \"36.410\",\n", + " \"38.932\",\n", + " \"39.052\",\n", " \"37.396\",\n", " \"34.686\",\n", " \"33.932\",\n", - " \"35.562\"\n", + " \"35.561\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", @@ -826,44 +919,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.952\",\n", - " \"djf\": \"0.95\",\n", - " \"mam\": \"0.93\",\n", - " \"jja\": \"0.95\",\n", - " \"son\": \"0.93\",\n", + " \"djf\": \"0.948\",\n", + " \"mam\": \"0.935\",\n", + " \"jja\": \"0.955\",\n", + " \"son\": \"0.930\",\n", " \"CalendarMonths\": [\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\"\n", + " \"0.946\",\n", + " \"0.938\",\n", + " \"0.938\",\n", + " \"0.922\",\n", + " \"0.925\",\n", + " \"0.944\",\n", + " \"0.949\",\n", + " \"0.949\",\n", + " \"0.939\",\n", + " \"0.916\",\n", + " \"0.917\",\n", + " \"0.936\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", - " \"ann\": \"6.331\",\n", - " \"djf\": \"7.493\",\n", - " \"mam\": \"8.024\",\n", - " \"jja\": \"7.628\",\n", - " \"son\": \"7.940\",\n", + " \"ann\": \"6.337\",\n", + " \"djf\": \"7.488\",\n", + " \"mam\": \"8.023\",\n", + " \"jja\": \"7.633\",\n", + " \"son\": \"7.947\",\n", " \"CalendarMonths\": [\n", - " \"8.015\",\n", - " \"8.693\",\n", - " \"8.520\",\n", - " \"8.889\",\n", - " \"8.656\",\n", - " \"7.961\",\n", - " \"8.217\",\n", - " \"8.243\",\n", - " \"8.657\",\n", + " \"8.016\",\n", + " \"8.683\",\n", + " \"8.518\",\n", " \"8.891\",\n", + " \"8.661\",\n", + " \"7.964\",\n", + " \"8.223\",\n", + " \"8.247\",\n", + " \"8.666\",\n", + " \"8.893\",\n", " \"8.307\",\n", - " \"7.976\"\n", + " \"7.982\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -912,103 +1005,103 @@ " \"ann\": \"9.363\"\n", " },\n", " \"rms_xy\": {\n", - " \"ann\": \"9.610\",\n", - " \"djf\": \"10.951\",\n", - " \"mam\": \"11.786\",\n", - " \"jja\": \"11.219\",\n", + " \"ann\": \"9.611\",\n", + " \"djf\": \"10.946\",\n", + " \"mam\": \"11.784\",\n", + " \"jja\": \"11.232\",\n", " \"son\": \"12.519\",\n", " \"CalendarMonths\": [\n", - " \"11.383\",\n", - " \"12.617\",\n", - " \"12.416\",\n", - " \"13.174\",\n", - " \"13.060\",\n", - " \"12.071\",\n", - " \"12.151\",\n", - " \"12.224\",\n", - " \"12.989\",\n", - " \"14.060\",\n", + " \"11.379\",\n", + " \"12.611\",\n", + " \"12.410\",\n", + " \"13.172\",\n", + " \"13.067\",\n", + " \"12.080\",\n", + " \"12.167\",\n", + " \"12.235\",\n", + " \"12.992\",\n", + " \"14.058\",\n", " \"13.062\",\n", " \"11.749\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"12.582\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"2.168\"\n", " },\n", " \"rmsc_xy\": {\n", " \"ann\": \"9.540\",\n", - " \"djf\": \"10.913\",\n", - " \"mam\": \"11.746\",\n", - " \"jja\": \"11.131\",\n", + " \"djf\": \"10.908\",\n", + " \"mam\": \"11.745\",\n", + " \"jja\": \"11.144\",\n", " \"son\": \"12.441\",\n", " \"CalendarMonths\": [\n", - " \"11.334\",\n", - " \"12.596\",\n", - " \"12.402\",\n", - " \"13.139\",\n", - " \"12.995\",\n", - " \"11.998\",\n", - " \"12.056\",\n", - " \"12.146\",\n", - " \"12.893\",\n", - " \"13.984\",\n", + " \"11.330\",\n", + " \"12.590\",\n", + " \"12.396\",\n", + " \"13.137\",\n", + " \"13.002\",\n", + " \"12.008\",\n", + " \"12.073\",\n", + " \"12.157\",\n", + " \"12.895\",\n", + " \"13.982\",\n", " \"13.013\",\n", - " \"11.713\"\n", + " \"11.712\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.647\",\n", - " \"djf\": \"32.686\",\n", - " \"mam\": \"30.818\",\n", - " \"jja\": \"35.375\",\n", - " \"son\": \"31.289\",\n", + " \"ann\": \"29.649\",\n", + " \"djf\": \"32.688\",\n", + " \"mam\": \"30.820\",\n", + " \"jja\": \"35.377\",\n", + " \"son\": \"31.291\",\n", " \"CalendarMonths\": [\n", - " \"33.135\",\n", - " \"33.734\",\n", - " \"33.073\",\n", - " \"31.262\",\n", - " \"31.721\",\n", - " \"34.451\",\n", - " \"36.365\",\n", - " \"36.271\",\n", - " \"34.820\",\n", - " \"32.053\",\n", - " \"30.983\",\n", - " \"31.985\"\n", + " \"33.137\",\n", + " \"33.736\",\n", + " \"33.075\",\n", + " \"31.264\",\n", + " \"31.723\",\n", + " \"34.453\",\n", + " \"36.366\",\n", + " \"36.272\",\n", + " \"34.822\",\n", + " \"32.055\",\n", + " \"30.985\",\n", + " \"31.987\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.983\"\n", + " \"ann\": \"12.987\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.469\"\n", + " \"ann\": \"33.470\"\n", " },\n", " \"std_xy\": {\n", - " \"ann\": \"31.123\",\n", - " \"djf\": \"34.351\",\n", + " \"ann\": \"31.122\",\n", + " \"djf\": \"34.350\",\n", " \"mam\": \"33.081\",\n", - " \"jja\": \"37.357\",\n", + " \"jja\": \"37.358\",\n", " \"son\": \"33.759\",\n", " \"CalendarMonths\": [\n", - " \"35.083\",\n", - " \"36.318\",\n", - " \"35.860\",\n", - " \"33.875\",\n", + " \"35.082\",\n", + " \"36.317\",\n", + " \"35.861\",\n", + " \"33.874\",\n", " \"34.141\",\n", - " \"36.390\",\n", - " \"38.237\",\n", - " \"38.696\",\n", - " \"37.492\",\n", + " \"36.392\",\n", + " \"38.239\",\n", + " \"38.697\",\n", + " \"37.491\",\n", " \"34.881\",\n", - " \"32.548\",\n", - " \"33.053\"\n", + " \"32.550\",\n", + " \"33.054\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", - " \"ann\": \"14.246\"\n", + " \"ann\": \"14.244\"\n", " },\n", " \"std_xyt\": {\n", " \"ann\": \"35.677\"\n", @@ -1045,44 +1138,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.952\",\n", - " \"djf\": \"0.95\",\n", - " \"mam\": \"0.93\",\n", - " \"jja\": \"0.95\",\n", - " \"son\": \"0.93\",\n", + " \"djf\": \"0.949\",\n", + " \"mam\": \"0.935\",\n", + " \"jja\": \"0.954\",\n", + " \"son\": \"0.929\",\n", " \"CalendarMonths\": [\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\"\n", + " \"0.946\",\n", + " \"0.938\",\n", + " \"0.938\",\n", + " \"0.922\",\n", + " \"0.925\",\n", + " \"0.944\",\n", + " \"0.949\",\n", + " \"0.949\",\n", + " \"0.939\",\n", + " \"0.916\",\n", + " \"0.916\",\n", + " \"0.938\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", - " \"ann\": \"6.334\",\n", - " \"djf\": \"7.487\",\n", + " \"ann\": \"6.339\",\n", + " \"djf\": \"7.480\",\n", " \"mam\": \"8.034\",\n", - " \"jja\": \"7.646\",\n", - " \"son\": \"7.998\",\n", + " \"jja\": \"7.652\",\n", + " \"son\": \"8.007\",\n", " \"CalendarMonths\": [\n", - " \"8.026\",\n", - " \"8.696\",\n", - " \"8.557\",\n", - " \"8.897\",\n", - " \"8.659\",\n", - " \"7.953\",\n", - " \"8.219\",\n", - " \"8.271\",\n", - " \"8.655\",\n", - " \"8.928\",\n", + " \"8.028\",\n", + " \"8.686\",\n", + " \"8.554\",\n", + " \"8.899\",\n", + " \"8.665\",\n", + " \"7.956\",\n", + " \"8.225\",\n", + " \"8.276\",\n", + " \"8.667\",\n", + " \"8.934\",\n", " \"8.362\",\n", - " \"7.874\"\n", + " \"7.880\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -1128,106 +1221,106 @@ " ]\n", " },\n", " \"rms_devzm\": {\n", - " \"ann\": \"9.363\"\n", + " \"ann\": \"9.364\"\n", " },\n", " \"rms_xy\": {\n", " \"ann\": \"9.609\",\n", - " \"djf\": \"10.919\",\n", - " \"mam\": \"11.801\",\n", - " \"jja\": \"11.248\",\n", - " \"son\": \"12.596\",\n", + " \"djf\": \"10.914\",\n", + " \"mam\": \"11.800\",\n", + " \"jja\": \"11.260\",\n", + " \"son\": \"12.595\",\n", " \"CalendarMonths\": [\n", - " \"11.412\",\n", - " \"12.621\",\n", - " \"12.476\",\n", - " \"13.176\",\n", - " \"13.057\",\n", - " \"12.083\",\n", - " \"12.152\",\n", - " \"12.268\",\n", - " \"13.012\",\n", - " \"14.098\",\n", - " \"13.152\",\n", + " \"11.408\",\n", + " \"12.616\",\n", + " \"12.470\",\n", + " \"13.174\",\n", + " \"13.064\",\n", + " \"12.093\",\n", + " \"12.168\",\n", + " \"12.279\",\n", + " \"13.014\",\n", + " \"14.096\",\n", + " \"13.151\",\n", " \"11.583\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"12.593\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"2.159\"\n", " },\n", " \"rmsc_xy\": {\n", - " \"ann\": \"9.538\",\n", - " \"djf\": \"10.878\",\n", - " \"mam\": \"11.757\",\n", - " \"jja\": \"11.161\",\n", + " \"ann\": \"9.539\",\n", + " \"djf\": \"10.874\",\n", + " \"mam\": \"11.756\",\n", + " \"jja\": \"11.174\",\n", " \"son\": \"12.527\",\n", " \"CalendarMonths\": [\n", - " \"11.361\",\n", - " \"12.600\",\n", - " \"12.461\",\n", - " \"13.137\",\n", - " \"12.980\",\n", - " \"12.005\",\n", - " \"12.057\",\n", - " \"12.199\",\n", - " \"12.925\",\n", - " \"14.034\",\n", - " \"13.107\",\n", + " \"11.357\",\n", + " \"12.594\",\n", + " \"12.454\",\n", + " \"13.135\",\n", + " \"12.988\",\n", + " \"12.015\",\n", + " \"12.073\",\n", + " \"12.209\",\n", + " \"12.928\",\n", + " \"14.032\",\n", + " \"13.106\",\n", " \"11.540\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.644\",\n", - " \"djf\": \"32.736\",\n", - " \"mam\": \"30.775\",\n", - " \"jja\": \"35.361\",\n", - " \"son\": \"31.194\",\n", + " \"ann\": \"29.645\",\n", + " \"djf\": \"32.738\",\n", + " \"mam\": \"30.777\",\n", + " \"jja\": \"35.363\",\n", + " \"son\": \"31.196\",\n", " \"CalendarMonths\": [\n", - " \"33.142\",\n", - " \"33.727\",\n", - " \"32.912\",\n", - " \"31.203\",\n", - " \"31.767\",\n", - " \"34.483\",\n", - " \"36.342\",\n", - " \"36.157\",\n", - " \"34.665\",\n", - " \"31.899\",\n", - " \"30.965\",\n", - " \"32.014\"\n", + " \"33.145\",\n", + " \"33.729\",\n", + " \"32.914\",\n", + " \"31.205\",\n", + " \"31.768\",\n", + " \"34.484\",\n", + " \"36.344\",\n", + " \"36.158\",\n", + " \"34.666\",\n", + " \"31.901\",\n", + " \"30.967\",\n", + " \"32.016\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.976\"\n", + " \"ann\": \"12.980\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.418\"\n", + " \"ann\": \"33.420\"\n", " },\n", " \"std_xy\": {\n", - " \"ann\": \"31.123\",\n", - " \"djf\": \"34.351\",\n", + " \"ann\": \"31.122\",\n", + " \"djf\": \"34.350\",\n", " \"mam\": \"33.081\",\n", - " \"jja\": \"37.357\",\n", + " \"jja\": \"37.358\",\n", " \"son\": \"33.759\",\n", " \"CalendarMonths\": [\n", - " \"35.083\",\n", - " \"36.318\",\n", - " \"35.860\",\n", - " \"33.875\",\n", + " \"35.082\",\n", + " \"36.317\",\n", + " \"35.861\",\n", + " \"33.874\",\n", " \"34.141\",\n", - " \"36.390\",\n", - " \"38.237\",\n", - " \"38.696\",\n", - " \"37.492\",\n", + " \"36.392\",\n", + " \"38.239\",\n", + " \"38.697\",\n", + " \"37.491\",\n", " \"34.881\",\n", - " \"32.548\",\n", - " \"33.053\"\n", + " \"32.550\",\n", + " \"33.054\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", - " \"ann\": \"14.246\"\n", + " \"ann\": \"14.244\"\n", " },\n", " \"std_xyt\": {\n", " \"ann\": \"35.677\"\n", @@ -1331,68 +1424,38 @@ "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:41:28,762 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:41:28,762 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:42::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:42:31,697 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:42:31,697 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:42:31,736 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:42:31,736 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:43::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:43:43,018 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:43:43,018 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:43:47,139 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:43:47,139 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:45::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:45:02,114 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:45:02,114 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:45:02,157 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:45:02,157 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:46::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:46:12,238 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:46:12,238 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "INFO::2023-11-09 16:46::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", - "2023-11-09 16:46:33,802 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", - "2023-11-09 16:46:33,802 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex2 \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: xesmf \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex2 \n", - " diagnostics_output_path: demo_output/Ex2 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex2\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: xesmf\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex2\n", + "diagnostics_output_path: demo_output_tmp/Ex2\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1400,68 +1463,128 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:33:15,391 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:33:15,391 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.93927790599767\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.60527090825452\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 2.849440160911837\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 7.557470849444263\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 22.607395028695382 22.427104154412426\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.7861025676947934\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.648381662240547\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.549244692371865\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.592896459787895\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.125610428460632\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.860898578606725\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.177708187327104 8.099998137034403\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.96795773835052\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:33::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:33:53,712 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:33:53,712 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:33:53,979 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:33:53,979 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.93927790599767\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 41.277546088282016\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.3070924524925915\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 9.860459737057527\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 31.29959559143669 31.27229114580701\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.6355158166285978\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.59914336644845\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.549244692371865\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.57963901558475\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1527243415926074\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.360708067056379\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.645756369004939 9.576658679806574\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9480905763948829\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:34::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:34:34,539 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:34:34,539 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1469,66 +1592,129 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:34:36,634 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:34:36,634 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.896082465222186\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.60527090825452\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 2.847343450867303\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 7.551058394040502\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 22.603314702394204 22.42325736391287\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.7861552158165768\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.645235171566236\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.4985130934034\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.592896459787895\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1235015665376828\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.85424526985928\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.166269891908385 8.088741773719214\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9680673356259839\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:35::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:11,725 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:11,725 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:35:11,958 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:35:11,958 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.896082465222186\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 41.277546088282016\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.3091891625371264\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 9.862415553120186\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 31.29710758581451 31.269713253797885\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.6355540591449562\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.608701107371159\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.4985130934034\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.57963901558475\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1548230280823464\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.36344180576563\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.64426986778833 9.574909140910318\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9481186093157992\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:35::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:46,498 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:46,498 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "INFO::2024-09-23 17:35::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", + "2024-09-23 17:35:57,972 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", + "2024-09-23 17:35:57,972 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -1553,58 +1739,38 @@ "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:46:57,258 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:46:57,258 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:47::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", - "2023-11-09 16:47:57,629 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", - "2023-11-09 16:47:57,629 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", - "2023-11-09 16:48:03,578 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:48:03,578 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:49::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", - "2023-11-09 16:49:02,702 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", - "2023-11-09 16:49:02,702 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", - "INFO::2023-11-09 16:49::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", - "2023-11-09 16:49:21,917 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", - "2023-11-09 16:49:21,917 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex3 \n", - " test_data_set: ['ACCESS1-0'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex3 \n", - " diagnostics_output_path: demo_output/Ex3 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex3\n", + "test_data_set: ['ACCESS1-0']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex3\n", + "diagnostics_output_path: demo_output_tmp/Ex3\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1612,71 +1778,134 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:36:09,348 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:36:09,348 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384451737888808\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.770012023689812\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.044682445768467 7.9637213813349925\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9693780836555635\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", - "'DataArray' object has no attribute 'units'\n", - "units: \n", - "ref_data load_and_regrid done\n", - "=================================\n", - "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", - "-----------------------\n", - "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", - "units: W m-2\n", - "load and regrid done\n", - "region: Global\n", - "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365878854524063\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.763493973471603\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.033820554038556 7.953014565127818\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9694728084795681\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.443886637144088\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384446642039474\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.770267763900403\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.04383979899538 7.962870239960437\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9693832697582581\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:36::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", + "2024-09-23 17:36:45,232 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", + "2024-09-23 17:36:45,232 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ref: default\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "'DataArray' object has no attribute 'units'\n", + "units: \n", + "ref_data load_and_regrid done\n", + "=================================\n", + "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", + "-----------------------\n", + "model, run: ACCESS1-0 \n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:36:46,544 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:36:46,544 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "units: W m-2\n", + "load and regrid done\n", + "region: Global\n", + "compute metrics start\n", + "var: rlut\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.441474434051779\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365873707975822\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.76358422001215\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.032983607315776 7.9521691873316795\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9694779269200444\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:37::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", + "2024-09-23 17:37:23,274 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", + "2024-09-23 17:37:23,274 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", + "INFO::2024-09-23 17:37::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", + "2024-09-23 17:37:35,156 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", + "2024-09-23 17:37:35,156 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -1702,68 +1931,38 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:49:45,266 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:49:45,266 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:50::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:50:41,150 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:50:41,150 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:50:41,183 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:50:41,183 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:51::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:51:35,777 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:51:35,777 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:51:42,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:51:42,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:52::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:52:38,464 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:52:38,464 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:52:38,494 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:52:38,494 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:53::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:53:33,822 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:53:33,822 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "INFO::2023-11-09 16:53::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", - "2023-11-09 16:53:54,053 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", - "2023-11-09 16:53:54,053 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex4 \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'MyDomain': {'domain': {'latitude': (20.0, 30)}}} \n", - " regions: {'rlut': ['MyDomain']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex4 \n", - " diagnostics_output_path: demo_output/Ex4 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex4\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'MyDomain': {'domain': {'latitude': (20.0, 30)}}}\n", + "regions: {'rlut': ['MyDomain']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex4\n", + "diagnostics_output_path: demo_output_tmp/Ex4\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1771,70 +1970,52 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:47,533 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:47,533 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.18138602499969\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.561827391039035\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.5946991696333115\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 4.150349791215329\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 5.291037658821646 5.2575100955401215\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9522270778028106\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for ACCESS1-0 \n", + "region_subset() got multiple values for argument 'region'\n", "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:48,558 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:48,558 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.18138602499969\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.245208810088847\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.6638373054433819\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.889229301904497\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 7.248559470317926 7.218097701377931\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9066905099914794\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for CanCM4 \n", + "region_subset() got multiple values for argument 'region'\n", "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1842,68 +2023,65 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:50,612 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:50,612 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.049296637854248\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.561827391039035\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.5913453737090093\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 4.160780868714007\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 5.294374298855912 5.261246037335545\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9522958639707434\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for ACCESS1-0 \n", + "region_subset() got multiple values for argument 'region'\n", "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:51,484 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:51,484 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.049296637854248\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.245208810088847\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.6604835095190796\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.886274128348927\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 7.247367618574384 7.217208527707502\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9068727312282716\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for CanCM4 \n", + "region_subset() got multiple values for argument 'region'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:38::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", + "2024-09-23 17:38:03,860 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", + "2024-09-23 17:38:03,860 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -1959,61 +2137,37 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:54:19,804 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:54:19,804 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:55::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:21,394 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:21,394 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:55::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:54,625 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:54,625 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:56::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:56:38,981 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:56:38,981 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:57::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:57:15,946 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:57:15,946 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:57::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", - "2023-11-09 16:57:35,313 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", - "2023-11-09 16:57:35,313 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex5 \n", - " test_data_set: ['CanCM4'] \n", - " realization: \n", - " vars: ['zg_500'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['alternate1'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex5 \n", - " diagnostics_output_path: demo_output/Ex5 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex5\n", + "test_data_set: ['CanCM4']\n", + "realization: \n", + "vars: ['zg_500']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['alternate1']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex5\n", + "diagnostics_output_path: demo_output_tmp/Ex5\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: zg\n", "level: 500.0\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/zg/ERA-INT/v20210804/zg_mon_ERA-INT_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/zg/ERA-INT/v20210804/zg_mon_ERA-INT_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -2021,112 +2175,82 @@ "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.zg.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.zg.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:38:15,114 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:38:15,114 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: m\n", "load and regrid done\n", "region: global\n", "compute metrics start\n", "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 266.78874424242247\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 289.171909592503\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -26.72829436270523\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 27.31174888102911\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 36.86848787995158 25.39456002798049\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9982646048078304\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "region: NHEX\n", - "spatial subset done\n", - "compute metrics start\n", - "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 217.77184929408025\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 243.07955688052704\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -33.98470754086787\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 36.12586072486697\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 43.4018204400982 26.99551205063858\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9934590261766263\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "region: SHEX\n", - "spatial subset done\n", - "compute metrics start\n", - "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 283.22012506599816\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 296.6174627856965\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -53.00982429706322\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 53.00982429706322\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 56.8956886480462 20.665863512804005\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9981088912216388\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "region: TROPICS\n", - "spatial subset done\n", - "compute metrics start\n", "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 28.36627012760418\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 34.43418248863642\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -9.959322806445527\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 10.055655251093725\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 12.575853648293624 7.678800962410827\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9609284596570256\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 43.136407421218316\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 266.7884899432676\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 289.17169839153274\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -26.728290236301323\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 27.30732894422076\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 36.86694958124509 25.392330977484043\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9982653843741294\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:38::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", + "2024-09-23 17:38:50,975 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", + "2024-09-23 17:38:50,975 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "region: NHEX\n", + "error occured for CanCM4 \n", + "region_subset() got multiple values for argument 'region'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", + "2024-09-23 17:39:01,774 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", + "2024-09-23 17:39:01,774 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -2162,68 +2286,38 @@ "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:58:00,109 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:58:00,109 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:58::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 16:58:59,465 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 16:58:59,465 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 16:58:59,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:58:59,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 17:00::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 17:00:04,816 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 17:00:04,816 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 17:00:10,978 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 17:00:10,978 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 17:01::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:01:07,454 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:01:07,454 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:01:07,496 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 17:01:07,496 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 17:02::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:02:06,691 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:02:06,691 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "INFO::2023-11-09 17:02::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", - "2023-11-09 17:02:24,735 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", - "2023-11-09 17:02:24,735 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex6 \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: True \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex6 \n", - " diagnostics_output_path: demo_output/Ex6 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex6\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: True\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex6\n", + "diagnostics_output_path: demo_output_tmp/Ex6\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -2231,68 +2325,128 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:39:12,152 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:39:12,152 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384451737888808\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.770012023689812\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.044682445768467 7.9637213813349925\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9693780836555635\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.443886637144088\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384446642039474\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.770267763900403\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.04383979899538 7.962870239960437\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9693832697582581\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:39:44,111 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:39:44,111 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:39:44,355 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:39:44,355 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635463134324031\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.331106438822097\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.610248337339145 9.539550989529207\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518659641205703\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.581863266319667\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635460184347601\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.33676419779921\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.611035481689909 9.540344002879925\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518562007048922\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:40::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:40:16,040 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:40:16,040 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -2300,66 +2454,129 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:40:17,494 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:40:17,494 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365878854524063\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.763493973471603\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.033820554038556 7.953014565127818\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9694728084795681\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.441474434051779\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365873707975822\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.76358422001215\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.032983607315776 7.9521691873316795\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9694779269200444\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:40::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:40:48,158 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:40:48,158 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:40:48,401 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:40:48,401 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1654036017688774\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.333692053819536\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.608637289548378 9.537701243333409\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518850115349531\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.592931277171877\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.165403311841126\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.339387410014902\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.609441449405928 9.538511418995654\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518750636449926\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:41:25,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:41:25,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "INFO::2024-09-23 17:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", + "2024-09-23 17:41:42,883 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", + "2024-09-23 17:41:42,883 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -2385,9 +2602,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [conda env:pmp_devel_20230223] *", + "display_name": "pmp_devel_20240425", "language": "python", - "name": "conda-env-pmp_devel_20230223-py" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -2399,7 +2616,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.10" }, "selected_variables": [], "vcdat_file_path": "", From b2a922bab1a09d129d340eb6215e9cadc5688aa5 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 16:51:28 -0700 Subject: [PATCH 11/17] clarify parameters --- pcmdi_metrics/io/regions.py | 38 ++++++++++++++----- .../mean_climate/mean_climate_driver.py | 10 ++--- 2 files changed, 33 insertions(+), 15 deletions(-) diff --git a/pcmdi_metrics/io/regions.py b/pcmdi_metrics/io/regions.py index b8e4a9f1f..e402a5d56 100755 --- a/pcmdi_metrics/io/regions.py +++ b/pcmdi_metrics/io/regions.py @@ -84,32 +84,52 @@ def load_regions_specs() -> dict: def region_subset( ds: Union[xr.Dataset, xr.DataArray], region: str, - data_var: str = "variable", + data_var: str = None, regions_specs: dict = None, debug: bool = False, ) -> Union[xr.Dataset, xr.DataArray]: - """_summary_ + """ + Subset a dataset or data array based on a specified region. + + This function subsets an xarray Dataset or DataArray based on the latitude and longitude + coordinates defined for a given region. It handles different longitude conventions + and can optionally provide debug information. Parameters ---------- ds : Union[xr.Dataset, xr.DataArray] - _description_ + The input dataset or data array to be subsetted. region : str - _description_ + The name of the region to subset the data to. This should correspond to a key + in the regions_specs dictionary. data_var : str, optional - _description_, by default None + The name of the data variable if ds is a DataArray, by default None, which names DataArray as "variable" in the Dataset if DataArray has no name. regions_specs : dict, optional - _description_, by default None - debug: bool, optional - Turn on debug print, by default False + A dictionary containing the specifications for different regions. If None, + it will be loaded from a default source, by default None. + debug : bool, optional + If True, print debug information during the subsetting process, by default False. Returns ------- Union[xr.Dataset, xr.DataArray] - _description_ + The subsetted dataset or data array, matching the input type. + + Notes + ----- + This function first converts DataArrays to Datasets for processing, then converts + back if necessary. It handles both latitude and longitude subsetting based on the + region specifications, and can deal with different longitude conventions (0 to 360 + vs -180 to 180). + """ if isinstance(ds, xr.DataArray): is_dataArray = True + if data_var is None: + if ds.name is None: + data_var = "variable" + else: + data_var = ds.name ds = da_to_ds(ds, data_var) else: is_dataArray = False diff --git a/pcmdi_metrics/mean_climate/mean_climate_driver.py b/pcmdi_metrics/mean_climate/mean_climate_driver.py index 7675a3bbb..05f29b800 100755 --- a/pcmdi_metrics/mean_climate/mean_climate_driver.py +++ b/pcmdi_metrics/mean_climate/mean_climate_driver.py @@ -339,17 +339,15 @@ else: ds_test_tmp = region_subset( ds_test_tmp, - region, - None, - regions_specs, + region=region, + regions_specs=regions_specs, ) ds_test_dict[region] = ds_test_tmp if region not in list(ds_ref_dict.keys()): ds_ref_dict[region] = region_subset( ds_ref_tmp, - region, - None, - regions_specs, + region=region, + regions_specs=regions_specs, ) print("spatial subset done") From a740bff44e704042db015736695d7f872940e565 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:02:16 -0700 Subject: [PATCH 12/17] clean up --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index 0e1eb2a73..bcede55a7 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -50,16 +50,14 @@ def read_mean_clim_json_files( level = int(dict_temp["Variable"]["level"]) if level > 1100: print( - "Warning: level = {}hPa in data, I guess this should be Pa".format( - level - ) + f"Warning: level = {level} hPa in data, I guess this should be Pa" ) level = int(level / 100.0) - var += "-" + str(level) # always hPa + var = f"{var}-{str(level)}" # always hPa results_dict[var] = dict_temp unit = extract_unit(var, results_dict[var]) if unit is not None: - var_unit = var + " [" + unit + "]" + var_unit = f"{var} [{unit}]" else: var_unit = var var_list.append(var) From 9c1c0d604526abda31464fe9428ba62f957eedb1 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:05:19 -0700 Subject: [PATCH 13/17] edit for warning message --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index bcede55a7..95fb7a039 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -50,7 +50,7 @@ def read_mean_clim_json_files( level = int(dict_temp["Variable"]["level"]) if level > 1100: print( - f"Warning: level = {level} hPa in data, I guess this should be Pa" + f"Warning: level is expected in hPa: level {level} looks like it is Pa, thus converting it to hPa by dividing it by 100." ) level = int(level / 100.0) var = f"{var}-{str(level)}" # always hPa From 2fa64ef03a15101d9e06da6f68282e47a6baaa28 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:26:31 -0700 Subject: [PATCH 14/17] improve warning message --- pcmdi_metrics/graphics/share/read_json_mean_clim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pcmdi_metrics/graphics/share/read_json_mean_clim.py b/pcmdi_metrics/graphics/share/read_json_mean_clim.py index 95fb7a039..f761e8242 100644 --- a/pcmdi_metrics/graphics/share/read_json_mean_clim.py +++ b/pcmdi_metrics/graphics/share/read_json_mean_clim.py @@ -50,7 +50,7 @@ def read_mean_clim_json_files( level = int(dict_temp["Variable"]["level"]) if level > 1100: print( - f"Warning: level is expected in hPa: level {level} looks like it is Pa, thus converting it to hPa by dividing it by 100." + f"Warning: The provided level value {level} appears to be in Pa. It will be automatically converted to hPa by dividing by 100." ) level = int(level / 100.0) var = f"{var}-{str(level)}" # always hPa From 15f8761562493832ef86fd5d1f3868b179cdbd5e Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Mon, 23 Sep 2024 17:48:49 -0700 Subject: [PATCH 15/17] update demo notebooks to the latest --- .../Demo/Demo_1a_compute_climatologies.ipynb | 131 +- doc/jupyter/Demo/Demo_1b_mean_climate.ipynb | 2631 +++++++++-------- 2 files changed, 1498 insertions(+), 1264 deletions(-) diff --git a/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb b/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb index e5c1f7526..9f52864d9 100644 --- a/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb +++ b/doc/jupyter/Demo/Demo_1a_compute_climatologies.ipynb @@ -82,10 +82,10 @@ "end = '2018-12'\n", "\n", "# INPUT DATASET - CAN BE MODEL OR OBSERVATIONS\n", - "infile = 'demo_data/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc'\n", + "infile = 'demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc'\n", "\n", "# DIRECTORY WHERE TO PUT RESULTS\n", - "outfile = 'demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc'\n", + "outfile = 'demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc'\n", "\n" ] } @@ -115,25 +115,26 @@ "text": [ "start and end are 2003-01 2018-12\n", "variable list: ['rlut']\n", - "infilename is rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "outdir is None\n", + "ver: v20240923\n", + "var: rlut\n", + "infile: demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "outfile: demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outfilename: None\n", + "outpath: None\n", + "ver: v20240923\n", + "infilename: rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "type(d): \n", + "atts: {'Conventions': 'CF-1.7 ODS-2.1', 'activity_id': 'obs4MIPs', 'contact': 'PCMDI (pcmdi-metrics@llnl.gov)', 'creation_date': '2021-07-27T18:20:26Z', 'curation_provenance': 'work-in-progress', 'data_specs_version': '2.1.0', 'external_variables': 'areacella', 'frequency': 'mon', 'further_info_url': 'https://furtherinfo.es-doc.org/CMIP6.NASA-LaRC.CERES-EBAF-4-1.experiment_idsub_experiment_idPCMDI', 'grid': '1x1 degree latitude x longitude', 'grid_label': 'gn', 'history': '2021-07-27T18:20:26Z; CMOR rewrote data to be consistent with obs4MIPs, and CF-1.7 ODS-2.1 standards', 'institution': 'NASA-LaRC (Langley Research Center) Hampton, Va', 'institution_id': 'NASA-LaRC', 'mip_era': 'CMIP6', 'nominal_resolution': '100 km', 'product': 'observations', 'realm': 'atmos', 'release_year': '2019', 'source': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_description': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_id': 'CERES-EBAF-4-1', 'source_label': 'CERES-EBAF-4-1', 'source_name': 'CERES-EBAF4-1', 'source_type': 'satellite_blended', 'source_version_number': '4.1', 'table_id': 'obs4MIPs_Amon', 'table_info': 'Creation Date:(18 November 2020) MD5:d8a4a72de798e86a999881bdaeb1809e', 'title': 'CERES prepared for obs4MIPs (ODS-v2.1.0)', 'tracking_id': 'hdl:21.14102/d1afa116-4801-4801-b302-43c49b5bb7dc', 'variable_id': 'rlut', 'variant_info': 'Best Estimate', 'variant_label': 'PCMDI', 'license': 'Data in this file processed for obs4MIPs by PCMDI and is for research purposes only.', 'cmor_version': '3.6.1'}\n", + "outdir: demo_output_tmp/climo\n", "start_yr_str is 2003\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "(12, 180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n" + "start_mo_str is 01\n", + "end_yr_str is 2018\n", + "end_mo_str is 12\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20240923.nc\n" ] } ], @@ -172,25 +173,40 @@ "text": [ "start and end are 2003-01 2018-12\n", "variable list: ['rlut']\n", - "infilename is rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "outdir is None\n", + "ver: v20240923\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/Users/lee1043/mambaforge/envs/pmp_devel_20240425/lib/python3.10/site-packages/pcmdi_metrics/io/string_constructor.py:43: UserWarning: Keyword 'variable' not provided for filling the template.\n", + " warnings.warn(f\"Keyword '{k}' not provided for filling the template.\")\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "var: rlut\n", + "infile: demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "outfile: demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outfilename: None\n", + "outpath: None\n", + "ver: v20240923\n", + "infilename: rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "type(d): \n", + "atts: {'Conventions': 'CF-1.7 ODS-2.1', 'activity_id': 'obs4MIPs', 'contact': 'PCMDI (pcmdi-metrics@llnl.gov)', 'creation_date': '2021-07-27T18:20:26Z', 'curation_provenance': 'work-in-progress', 'data_specs_version': '2.1.0', 'external_variables': 'areacella', 'frequency': 'mon', 'further_info_url': 'https://furtherinfo.es-doc.org/CMIP6.NASA-LaRC.CERES-EBAF-4-1.experiment_idsub_experiment_idPCMDI', 'grid': '1x1 degree latitude x longitude', 'grid_label': 'gn', 'history': '2021-07-27T18:20:26Z; CMOR rewrote data to be consistent with obs4MIPs, and CF-1.7 ODS-2.1 standards', 'institution': 'NASA-LaRC (Langley Research Center) Hampton, Va', 'institution_id': 'NASA-LaRC', 'mip_era': 'CMIP6', 'nominal_resolution': '100 km', 'product': 'observations', 'realm': 'atmos', 'release_year': '2019', 'source': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_description': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_id': 'CERES-EBAF-4-1', 'source_label': 'CERES-EBAF-4-1', 'source_name': 'CERES-EBAF4-1', 'source_type': 'satellite_blended', 'source_version_number': '4.1', 'table_id': 'obs4MIPs_Amon', 'table_info': 'Creation Date:(18 November 2020) MD5:d8a4a72de798e86a999881bdaeb1809e', 'title': 'CERES prepared for obs4MIPs (ODS-v2.1.0)', 'tracking_id': 'hdl:21.14102/d1afa116-4801-4801-b302-43c49b5bb7dc', 'variable_id': 'rlut', 'variant_info': 'Best Estimate', 'variant_label': 'PCMDI', 'license': 'Data in this file processed for obs4MIPs by PCMDI and is for research purposes only.', 'cmor_version': '3.6.1'}\n", + "outdir: demo_output_tmp/climo\n", "start_yr_str is 2003\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "(12, 180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n" + "start_mo_str is 01\n", + "end_yr_str is 2018\n", + "end_mo_str is 12\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20240923.nc\n" ] } ], @@ -231,25 +247,26 @@ "text": [ "start and end are 2003-01 2018-12\n", "variable list: ['rlut']\n", - "infilename is rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "outdir is demo_output/climo/\n", + "ver: v20240923\n", + "var: rlut\n", + "infile: demo_data_tmp/obs4MIPs_PCMDI_monthly/NASA-LaRC/CERES-EBAF-4-1/mon/rlut/gn/v20210727/rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "outfile: demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outfilename: rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", + "outpath: demo_output_tmp/climo/\n", + "ver: v20240923\n", + "infilename: rlut_mon_CERES-EBAF-4-1_PCMDI_gn_200301-201812.nc\n", + "type(d): \n", + "atts: {'Conventions': 'CF-1.7 ODS-2.1', 'activity_id': 'obs4MIPs', 'contact': 'PCMDI (pcmdi-metrics@llnl.gov)', 'creation_date': '2021-07-27T18:20:26Z', 'curation_provenance': 'work-in-progress', 'data_specs_version': '2.1.0', 'external_variables': 'areacella', 'frequency': 'mon', 'further_info_url': 'https://furtherinfo.es-doc.org/CMIP6.NASA-LaRC.CERES-EBAF-4-1.experiment_idsub_experiment_idPCMDI', 'grid': '1x1 degree latitude x longitude', 'grid_label': 'gn', 'history': '2021-07-27T18:20:26Z; CMOR rewrote data to be consistent with obs4MIPs, and CF-1.7 ODS-2.1 standards', 'institution': 'NASA-LaRC (Langley Research Center) Hampton, Va', 'institution_id': 'NASA-LaRC', 'mip_era': 'CMIP6', 'nominal_resolution': '100 km', 'product': 'observations', 'realm': 'atmos', 'release_year': '2019', 'source': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_description': 'CERES EBAF (Energy Balanced and Filled) TOA Fluxes. Monthly Averages', 'source_id': 'CERES-EBAF-4-1', 'source_label': 'CERES-EBAF-4-1', 'source_name': 'CERES-EBAF4-1', 'source_type': 'satellite_blended', 'source_version_number': '4.1', 'table_id': 'obs4MIPs_Amon', 'table_info': 'Creation Date:(18 November 2020) MD5:d8a4a72de798e86a999881bdaeb1809e', 'title': 'CERES prepared for obs4MIPs (ODS-v2.1.0)', 'tracking_id': 'hdl:21.14102/d1afa116-4801-4801-b302-43c49b5bb7dc', 'variable_id': 'rlut', 'variant_info': 'Best Estimate', 'variant_label': 'PCMDI', 'license': 'Data in this file processed for obs4MIPs by PCMDI and is for research purposes only.', 'cmor_version': '3.6.1'}\n", + "outdir: demo_output_tmp/climo/\n", "start_yr_str is 2003\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "(12, 180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20220420.nc\n", - "outfd is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.nc\n", - "out is demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n", - "(180, 360) (12, 180, 360) demo_output/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20220420.nc\n" + "start_mo_str is 01\n", + "end_yr_str is 2018\n", + "end_mo_str is 12\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.AC.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.DJF.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.MAM.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.JJA.v20240923.nc\n", + "output file is demo_output_tmp/climo/rlut_mon_CERES-EBAF-4-1_BE_gn.200301-201812.SON.v20240923.nc\n" ] } ], @@ -278,7 +295,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.10.10" } }, "nbformat": 4, diff --git a/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb b/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb index eb515380c..3661d9bd8 100644 --- a/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb +++ b/doc/jupyter/Demo/Demo_1b_mean_climate.ipynb @@ -94,14 +94,14 @@ "regions = {\"rlut\": [\"Global\"]}\n", "\n", "# ROOT PATH FOR MODELS CLIMATOLOGIES\n", - "test_data_path = 'demo_data/CMIP5_demo_clims/'\n", + "test_data_path = 'demo_data_tmp/CMIP5_demo_clims/'\n", "# ROOT PATH FOR OBSERVATIONS\n", "# Note that atm/mo/%(variable)/ac will be added to this\n", - "reference_data_path = 'demo_data/obs4MIPs_PCMDI_clims'\n", + "reference_data_path = 'demo_data_tmp/obs4MIPs_PCMDI_clims'\n", "\n", "# DIRECTORY WHERE TO PUT RESULTS\n", "metrics_output_path = os.path.join(\n", - " 'demo_output',\n", + " 'demo_output_tmp',\n", " \"%(case_id)\")\n", "\n" ] @@ -131,68 +131,38 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:38:41,260 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:38:41,260 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:14,932 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:14,932 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:14,958 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:39:14,958 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:50,007 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:50,007 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", - "2023-11-09 16:39:55,027 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:39:55,027 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:40::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:40:29,591 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:40:29,591 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:40:29,627 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:40:29,627 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:41:05,136 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "2023-11-09 16:41:05,136 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", - "INFO::2023-11-09 16:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", - "2023-11-09 16:41:05,142 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", - "2023-11-09 16:41:05,142 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: basicTest \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/basicTest \n", - " diagnostics_output_path: demo_output/basicTest \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: basicTest\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/basicTest\n", + "diagnostics_output_path: demo_output_tmp/basicTest\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -200,68 +170,128 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:30:18,896 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:30:18,896 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384451737888808\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.770012023689812\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.044682445768467 7.9637213813349925\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9693780836555635\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.443886637144088\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384446642039474\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.770267763900403\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.04383979899538 7.962870239960437\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9693832697582581\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:30::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:30:56,106 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:30:56,106 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:30:56,389 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:30:56,389 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635463134324031\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.331106438822097\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.610248337339145 9.539550989529207\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518659641205703\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.581863266319667\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635460184347601\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.33676419779921\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.611035481689909 9.540344002879925\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518562007048922\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:31::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:31:34,467 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n", + "2024-09-23 17:31:34,467 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -269,66 +299,129 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:31:35,863 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:31:35,863 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365878854524063\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.763493973471603\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.033820554038556 7.953014565127818\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9694728084795681\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.441474434051779\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365873707975822\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.76358422001215\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.032983607315776 7.9521691873316795\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9694779269200444\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:32::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:12,991 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:12,991 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:32:13,222 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:32:13,222 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1654036017688774\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.333692053819536\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.608637289548378 9.537701243333409\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518850115349531\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.592931277171877\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.165403311841126\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.339387410014902\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.609441449405928 9.538511418995654\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518750636449926\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:32::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:46,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "2024-09-23 17:32:46,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_basicTest.json\n", + "INFO::2024-09-23 17:33::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", + "2024-09-23 17:33:02,224 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n", + "2024-09-23 17:33:02,224 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/basicTest/rlut_2.5x2.5_regrid2_metrics_basicTest.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -387,44 +480,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.969\",\n", - " \"djf\": \"0.96\",\n", - " \"mam\": \"0.95\",\n", - " \"jja\": \"0.96\",\n", - " \"son\": \"0.96\",\n", + " \"djf\": \"0.962\",\n", + " \"mam\": \"0.951\",\n", + " \"jja\": \"0.961\",\n", + " \"son\": \"0.963\",\n", " \"CalendarMonths\": [\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.93\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.95\"\n", + " \"0.956\",\n", + " \"0.959\",\n", + " \"0.950\",\n", + " \"0.946\",\n", + " \"0.931\",\n", + " \"0.945\",\n", + " \"0.953\",\n", + " \"0.957\",\n", + " \"0.959\",\n", + " \"0.951\",\n", + " \"0.946\",\n", + " \"0.945\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", " \"ann\": \"5.770\",\n", - " \"djf\": \"7.157\",\n", - " \"mam\": \"7.247\",\n", - " \"jja\": \"7.517\",\n", - " \"son\": \"6.448\",\n", + " \"djf\": \"7.156\",\n", + " \"mam\": \"7.245\",\n", + " \"jja\": \"7.515\",\n", + " \"son\": \"6.443\",\n", " \"CalendarMonths\": [\n", + " \"7.772\",\n", + " \"7.634\",\n", + " \"8.009\",\n", " \"7.774\",\n", - " \"7.641\",\n", - " \"8.017\",\n", - " \"7.776\",\n", " \"7.820\",\n", - " \"7.989\",\n", - " \"8.508\",\n", - " \"8.006\",\n", - " \"7.362\",\n", - " \"7.296\",\n", - " \"7.280\",\n", - " \"7.719\"\n", + " \"7.995\",\n", + " \"8.502\",\n", + " \"8.003\",\n", + " \"7.360\",\n", + " \"7.288\",\n", + " \"7.277\",\n", + " \"7.714\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -470,102 +563,102 @@ " ]\n", " },\n", " \"rms_devzm\": {\n", - " \"ann\": \"5.808\"\n", + " \"ann\": \"5.807\"\n", " },\n", " \"rms_xy\": {\n", - " \"ann\": \"8.045\",\n", - " \"djf\": \"10.232\",\n", + " \"ann\": \"8.044\",\n", + " \"djf\": \"10.231\",\n", " \"mam\": \"10.775\",\n", - " \"jja\": \"10.443\",\n", - " \"son\": \"9.260\",\n", + " \"jja\": \"10.441\",\n", + " \"son\": \"9.257\",\n", " \"CalendarMonths\": [\n", " \"11.121\",\n", " \"10.901\",\n", - " \"11.602\",\n", - " \"11.489\",\n", + " \"11.603\",\n", + " \"11.490\",\n", " \"12.612\",\n", - " \"11.981\",\n", - " \"11.852\",\n", - " \"11.344\",\n", - " \"10.657\",\n", - " \"10.753\",\n", - " \"11.132\",\n", - " \"11.892\"\n", + " \"11.982\",\n", + " \"11.850\",\n", + " \"11.340\",\n", + " \"10.656\",\n", + " \"10.751\",\n", + " \"11.130\",\n", + " \"11.890\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"11.444\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"5.566\"\n", " },\n", " \"rmsc_xy\": {\n", - " \"ann\": \"7.964\",\n", - " \"djf\": \"10.094\",\n", - " \"mam\": \"10.684\",\n", - " \"jja\": \"10.407\",\n", - " \"son\": \"9.238\",\n", + " \"ann\": \"7.963\",\n", + " \"djf\": \"10.093\",\n", + " \"mam\": \"10.685\",\n", + " \"jja\": \"10.405\",\n", + " \"son\": \"9.235\",\n", " \"CalendarMonths\": [\n", " \"10.989\",\n", " \"10.834\",\n", - " \"11.539\",\n", + " \"11.541\",\n", " \"11.409\",\n", " \"12.509\",\n", " \"11.912\",\n", - " \"11.823\",\n", - " \"11.334\",\n", - " \"10.655\",\n", - " \"10.745\",\n", - " \"11.056\",\n", - " \"11.701\"\n", + " \"11.822\",\n", + " \"11.331\",\n", + " \"10.654\",\n", + " \"10.744\",\n", + " \"11.053\",\n", + " \"11.699\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.647\",\n", - " \"djf\": \"32.686\",\n", - " \"mam\": \"30.818\",\n", - " \"jja\": \"35.375\",\n", - " \"son\": \"31.289\",\n", + " \"ann\": \"29.649\",\n", + " \"djf\": \"32.688\",\n", + " \"mam\": \"30.820\",\n", + " \"jja\": \"35.377\",\n", + " \"son\": \"31.291\",\n", " \"CalendarMonths\": [\n", - " \"33.135\",\n", - " \"33.734\",\n", - " \"33.073\",\n", - " \"31.262\",\n", - " \"31.721\",\n", - " \"34.451\",\n", - " \"36.365\",\n", - " \"36.271\",\n", - " \"34.820\",\n", - " \"32.053\",\n", - " \"30.983\",\n", - " \"31.985\"\n", + " \"33.137\",\n", + " \"33.736\",\n", + " \"33.075\",\n", + " \"31.264\",\n", + " \"31.723\",\n", + " \"34.453\",\n", + " \"36.366\",\n", + " \"36.272\",\n", + " \"34.822\",\n", + " \"32.055\",\n", + " \"30.985\",\n", + " \"31.987\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.983\"\n", + " \"ann\": \"12.987\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.469\"\n", + " \"ann\": \"33.470\"\n", " },\n", " \"std_xy\": {\n", " \"ann\": \"31.966\",\n", - " \"djf\": \"36.191\",\n", + " \"djf\": \"36.189\",\n", " \"mam\": \"34.089\",\n", - " \"jja\": \"37.564\",\n", + " \"jja\": \"37.563\",\n", " \"son\": \"33.813\",\n", " \"CalendarMonths\": [\n", - " \"36.778\",\n", - " \"37.344\",\n", + " \"36.777\",\n", + " \"37.343\",\n", " \"36.641\",\n", - " \"34.890\",\n", + " \"34.891\",\n", " \"34.366\",\n", - " \"36.411\",\n", - " \"38.933\",\n", - " \"39.053\",\n", + " \"36.410\",\n", + " \"38.932\",\n", + " \"39.052\",\n", " \"37.396\",\n", " \"34.686\",\n", " \"33.932\",\n", - " \"35.562\"\n", + " \"35.561\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", @@ -606,44 +699,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.969\",\n", - " \"djf\": \"0.96\",\n", - " \"mam\": \"0.95\",\n", - " \"jja\": \"0.96\",\n", - " \"son\": \"0.96\",\n", + " \"djf\": \"0.962\",\n", + " \"mam\": \"0.950\",\n", + " \"jja\": \"0.961\",\n", + " \"son\": \"0.963\",\n", " \"CalendarMonths\": [\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.93\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.96\",\n", - " \"0.96\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.95\"\n", + " \"0.956\",\n", + " \"0.959\",\n", + " \"0.950\",\n", + " \"0.945\",\n", + " \"0.930\",\n", + " \"0.944\",\n", + " \"0.952\",\n", + " \"0.957\",\n", + " \"0.960\",\n", + " \"0.952\",\n", + " \"0.947\",\n", + " \"0.947\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", - " \"ann\": \"5.763\",\n", - " \"djf\": \"7.164\",\n", + " \"ann\": \"5.764\",\n", + " \"djf\": \"7.162\",\n", " \"mam\": \"7.307\",\n", - " \"jja\": \"7.560\",\n", - " \"son\": \"6.379\",\n", + " \"jja\": \"7.558\",\n", + " \"son\": \"6.375\",\n", " \"CalendarMonths\": [\n", - " \"7.812\",\n", - " \"7.649\",\n", - " \"8.087\",\n", - " \"7.828\",\n", - " \"7.843\",\n", - " \"8.028\",\n", - " \"8.551\",\n", - " \"8.058\",\n", + " \"7.811\",\n", + " \"7.642\",\n", + " \"8.079\",\n", + " \"7.827\",\n", + " \"7.844\",\n", + " \"8.034\",\n", + " \"8.546\",\n", + " \"8.056\",\n", " \"7.319\",\n", - " \"7.211\",\n", - " \"7.159\",\n", - " \"7.554\"\n", + " \"7.206\",\n", + " \"7.157\",\n", + " \"7.549\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -689,102 +782,102 @@ " ]\n", " },\n", " \"rms_devzm\": {\n", - " \"ann\": \"5.808\"\n", + " \"ann\": \"5.807\"\n", " },\n", " \"rms_xy\": {\n", - " \"ann\": \"8.034\",\n", - " \"djf\": \"10.240\",\n", + " \"ann\": \"8.033\",\n", + " \"djf\": \"10.239\",\n", " \"mam\": \"10.872\",\n", - " \"jja\": \"10.488\",\n", - " \"son\": \"9.202\",\n", + " \"jja\": \"10.486\",\n", + " \"son\": \"9.200\",\n", " \"CalendarMonths\": [\n", " \"11.139\",\n", - " \"10.909\",\n", - " \"11.669\",\n", - " \"11.580\",\n", + " \"10.910\",\n", + " \"11.670\",\n", + " \"11.581\",\n", " \"12.718\",\n", " \"12.062\",\n", - " \"11.913\",\n", - " \"11.353\",\n", - " \"10.565\",\n", - " \"10.660\",\n", - " \"11.013\",\n", - " \"11.727\"\n", + " \"11.912\",\n", + " \"11.349\",\n", + " \"10.564\",\n", + " \"10.658\",\n", + " \"11.011\",\n", + " \"11.725\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"11.441\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"5.551\"\n", " },\n", " \"rmsc_xy\": {\n", - " \"ann\": \"7.953\",\n", - " \"djf\": \"10.107\",\n", + " \"ann\": \"7.952\",\n", + " \"djf\": \"10.106\",\n", " \"mam\": \"10.791\",\n", - " \"jja\": \"10.452\",\n", - " \"son\": \"9.175\",\n", + " \"jja\": \"10.450\",\n", + " \"son\": \"9.172\",\n", " \"CalendarMonths\": [\n", " \"11.010\",\n", - " \"10.842\",\n", - " \"11.610\",\n", - " \"11.506\",\n", - " \"12.630\",\n", + " \"10.843\",\n", + " \"11.612\",\n", + " \"11.507\",\n", + " \"12.629\",\n", " \"11.998\",\n", - " \"11.885\",\n", - " \"11.340\",\n", - " \"10.562\",\n", - " \"10.647\",\n", - " \"10.930\",\n", - " \"11.546\"\n", + " \"11.884\",\n", + " \"11.336\",\n", + " \"10.561\",\n", + " \"10.645\",\n", + " \"10.928\",\n", + " \"11.545\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.644\",\n", - " \"djf\": \"32.736\",\n", - " \"mam\": \"30.775\",\n", - " \"jja\": \"35.361\",\n", - " \"son\": \"31.194\",\n", + " \"ann\": \"29.645\",\n", + " \"djf\": \"32.738\",\n", + " \"mam\": \"30.777\",\n", + " \"jja\": \"35.363\",\n", + " \"son\": \"31.196\",\n", " \"CalendarMonths\": [\n", - " \"33.142\",\n", - " \"33.727\",\n", - " \"32.912\",\n", - " \"31.203\",\n", - " \"31.767\",\n", - " \"34.483\",\n", - " \"36.342\",\n", - " \"36.157\",\n", - " \"34.665\",\n", - " \"31.899\",\n", - " \"30.965\",\n", - " \"32.014\"\n", + " \"33.145\",\n", + " \"33.729\",\n", + " \"32.914\",\n", + " \"31.205\",\n", + " \"31.768\",\n", + " \"34.484\",\n", + " \"36.344\",\n", + " \"36.158\",\n", + " \"34.666\",\n", + " \"31.901\",\n", + " \"30.967\",\n", + " \"32.016\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.976\"\n", + " \"ann\": \"12.980\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.418\"\n", + " \"ann\": \"33.420\"\n", " },\n", " \"std_xy\": {\n", " \"ann\": \"31.966\",\n", - " \"djf\": \"36.191\",\n", + " \"djf\": \"36.189\",\n", " \"mam\": \"34.089\",\n", - " \"jja\": \"37.564\",\n", + " \"jja\": \"37.563\",\n", " \"son\": \"33.813\",\n", " \"CalendarMonths\": [\n", - " \"36.778\",\n", - " \"37.344\",\n", + " \"36.777\",\n", + " \"37.343\",\n", " \"36.641\",\n", - " \"34.890\",\n", + " \"34.891\",\n", " \"34.366\",\n", - " \"36.411\",\n", - " \"38.933\",\n", - " \"39.053\",\n", + " \"36.410\",\n", + " \"38.932\",\n", + " \"39.052\",\n", " \"37.396\",\n", " \"34.686\",\n", " \"33.932\",\n", - " \"35.562\"\n", + " \"35.561\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", @@ -826,44 +919,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.952\",\n", - " \"djf\": \"0.95\",\n", - " \"mam\": \"0.93\",\n", - " \"jja\": \"0.95\",\n", - " \"son\": \"0.93\",\n", + " \"djf\": \"0.948\",\n", + " \"mam\": \"0.935\",\n", + " \"jja\": \"0.955\",\n", + " \"son\": \"0.930\",\n", " \"CalendarMonths\": [\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\"\n", + " \"0.946\",\n", + " \"0.938\",\n", + " \"0.938\",\n", + " \"0.922\",\n", + " \"0.925\",\n", + " \"0.944\",\n", + " \"0.949\",\n", + " \"0.949\",\n", + " \"0.939\",\n", + " \"0.916\",\n", + " \"0.917\",\n", + " \"0.936\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", - " \"ann\": \"6.331\",\n", - " \"djf\": \"7.493\",\n", - " \"mam\": \"8.024\",\n", - " \"jja\": \"7.628\",\n", - " \"son\": \"7.940\",\n", + " \"ann\": \"6.337\",\n", + " \"djf\": \"7.488\",\n", + " \"mam\": \"8.023\",\n", + " \"jja\": \"7.633\",\n", + " \"son\": \"7.947\",\n", " \"CalendarMonths\": [\n", - " \"8.015\",\n", - " \"8.693\",\n", - " \"8.520\",\n", - " \"8.889\",\n", - " \"8.656\",\n", - " \"7.961\",\n", - " \"8.217\",\n", - " \"8.243\",\n", - " \"8.657\",\n", + " \"8.016\",\n", + " \"8.683\",\n", + " \"8.518\",\n", " \"8.891\",\n", + " \"8.661\",\n", + " \"7.964\",\n", + " \"8.223\",\n", + " \"8.247\",\n", + " \"8.666\",\n", + " \"8.893\",\n", " \"8.307\",\n", - " \"7.976\"\n", + " \"7.982\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -912,103 +1005,103 @@ " \"ann\": \"9.363\"\n", " },\n", " \"rms_xy\": {\n", - " \"ann\": \"9.610\",\n", - " \"djf\": \"10.951\",\n", - " \"mam\": \"11.786\",\n", - " \"jja\": \"11.219\",\n", + " \"ann\": \"9.611\",\n", + " \"djf\": \"10.946\",\n", + " \"mam\": \"11.784\",\n", + " \"jja\": \"11.232\",\n", " \"son\": \"12.519\",\n", " \"CalendarMonths\": [\n", - " \"11.383\",\n", - " \"12.617\",\n", - " \"12.416\",\n", - " \"13.174\",\n", - " \"13.060\",\n", - " \"12.071\",\n", - " \"12.151\",\n", - " \"12.224\",\n", - " \"12.989\",\n", - " \"14.060\",\n", + " \"11.379\",\n", + " \"12.611\",\n", + " \"12.410\",\n", + " \"13.172\",\n", + " \"13.067\",\n", + " \"12.080\",\n", + " \"12.167\",\n", + " \"12.235\",\n", + " \"12.992\",\n", + " \"14.058\",\n", " \"13.062\",\n", " \"11.749\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"12.582\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"2.168\"\n", " },\n", " \"rmsc_xy\": {\n", " \"ann\": \"9.540\",\n", - " \"djf\": \"10.913\",\n", - " \"mam\": \"11.746\",\n", - " \"jja\": \"11.131\",\n", + " \"djf\": \"10.908\",\n", + " \"mam\": \"11.745\",\n", + " \"jja\": \"11.144\",\n", " \"son\": \"12.441\",\n", " \"CalendarMonths\": [\n", - " \"11.334\",\n", - " \"12.596\",\n", - " \"12.402\",\n", - " \"13.139\",\n", - " \"12.995\",\n", - " \"11.998\",\n", - " \"12.056\",\n", - " \"12.146\",\n", - " \"12.893\",\n", - " \"13.984\",\n", + " \"11.330\",\n", + " \"12.590\",\n", + " \"12.396\",\n", + " \"13.137\",\n", + " \"13.002\",\n", + " \"12.008\",\n", + " \"12.073\",\n", + " \"12.157\",\n", + " \"12.895\",\n", + " \"13.982\",\n", " \"13.013\",\n", - " \"11.713\"\n", + " \"11.712\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.647\",\n", - " \"djf\": \"32.686\",\n", - " \"mam\": \"30.818\",\n", - " \"jja\": \"35.375\",\n", - " \"son\": \"31.289\",\n", + " \"ann\": \"29.649\",\n", + " \"djf\": \"32.688\",\n", + " \"mam\": \"30.820\",\n", + " \"jja\": \"35.377\",\n", + " \"son\": \"31.291\",\n", " \"CalendarMonths\": [\n", - " \"33.135\",\n", - " \"33.734\",\n", - " \"33.073\",\n", - " \"31.262\",\n", - " \"31.721\",\n", - " \"34.451\",\n", - " \"36.365\",\n", - " \"36.271\",\n", - " \"34.820\",\n", - " \"32.053\",\n", - " \"30.983\",\n", - " \"31.985\"\n", + " \"33.137\",\n", + " \"33.736\",\n", + " \"33.075\",\n", + " \"31.264\",\n", + " \"31.723\",\n", + " \"34.453\",\n", + " \"36.366\",\n", + " \"36.272\",\n", + " \"34.822\",\n", + " \"32.055\",\n", + " \"30.985\",\n", + " \"31.987\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.983\"\n", + " \"ann\": \"12.987\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.469\"\n", + " \"ann\": \"33.470\"\n", " },\n", " \"std_xy\": {\n", - " \"ann\": \"31.123\",\n", - " \"djf\": \"34.351\",\n", + " \"ann\": \"31.122\",\n", + " \"djf\": \"34.350\",\n", " \"mam\": \"33.081\",\n", - " \"jja\": \"37.357\",\n", + " \"jja\": \"37.358\",\n", " \"son\": \"33.759\",\n", " \"CalendarMonths\": [\n", - " \"35.083\",\n", - " \"36.318\",\n", - " \"35.860\",\n", - " \"33.875\",\n", + " \"35.082\",\n", + " \"36.317\",\n", + " \"35.861\",\n", + " \"33.874\",\n", " \"34.141\",\n", - " \"36.390\",\n", - " \"38.237\",\n", - " \"38.696\",\n", - " \"37.492\",\n", + " \"36.392\",\n", + " \"38.239\",\n", + " \"38.697\",\n", + " \"37.491\",\n", " \"34.881\",\n", - " \"32.548\",\n", - " \"33.053\"\n", + " \"32.550\",\n", + " \"33.054\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", - " \"ann\": \"14.246\"\n", + " \"ann\": \"14.244\"\n", " },\n", " \"std_xyt\": {\n", " \"ann\": \"35.677\"\n", @@ -1045,44 +1138,44 @@ " },\n", " \"cor_xy\": {\n", " \"ann\": \"0.952\",\n", - " \"djf\": \"0.95\",\n", - " \"mam\": \"0.93\",\n", - " \"jja\": \"0.95\",\n", - " \"son\": \"0.93\",\n", + " \"djf\": \"0.949\",\n", + " \"mam\": \"0.935\",\n", + " \"jja\": \"0.954\",\n", + " \"son\": \"0.929\",\n", " \"CalendarMonths\": [\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\",\n", - " \"0.95\",\n", - " \"0.95\",\n", - " \"0.94\",\n", - " \"0.92\",\n", - " \"0.92\",\n", - " \"0.94\"\n", + " \"0.946\",\n", + " \"0.938\",\n", + " \"0.938\",\n", + " \"0.922\",\n", + " \"0.925\",\n", + " \"0.944\",\n", + " \"0.949\",\n", + " \"0.949\",\n", + " \"0.939\",\n", + " \"0.916\",\n", + " \"0.916\",\n", + " \"0.938\"\n", " ]\n", " },\n", " \"mae_xy\": {\n", - " \"ann\": \"6.334\",\n", - " \"djf\": \"7.487\",\n", + " \"ann\": \"6.339\",\n", + " \"djf\": \"7.480\",\n", " \"mam\": \"8.034\",\n", - " \"jja\": \"7.646\",\n", - " \"son\": \"7.998\",\n", + " \"jja\": \"7.652\",\n", + " \"son\": \"8.007\",\n", " \"CalendarMonths\": [\n", - " \"8.026\",\n", - " \"8.696\",\n", - " \"8.557\",\n", - " \"8.897\",\n", - " \"8.659\",\n", - " \"7.953\",\n", - " \"8.219\",\n", - " \"8.271\",\n", - " \"8.655\",\n", - " \"8.928\",\n", + " \"8.028\",\n", + " \"8.686\",\n", + " \"8.554\",\n", + " \"8.899\",\n", + " \"8.665\",\n", + " \"7.956\",\n", + " \"8.225\",\n", + " \"8.276\",\n", + " \"8.667\",\n", + " \"8.934\",\n", " \"8.362\",\n", - " \"7.874\"\n", + " \"7.880\"\n", " ]\n", " },\n", " \"mean-obs_xy\": {\n", @@ -1128,106 +1221,106 @@ " ]\n", " },\n", " \"rms_devzm\": {\n", - " \"ann\": \"9.363\"\n", + " \"ann\": \"9.364\"\n", " },\n", " \"rms_xy\": {\n", " \"ann\": \"9.609\",\n", - " \"djf\": \"10.919\",\n", - " \"mam\": \"11.801\",\n", - " \"jja\": \"11.248\",\n", - " \"son\": \"12.596\",\n", + " \"djf\": \"10.914\",\n", + " \"mam\": \"11.800\",\n", + " \"jja\": \"11.260\",\n", + " \"son\": \"12.595\",\n", " \"CalendarMonths\": [\n", - " \"11.412\",\n", - " \"12.621\",\n", - " \"12.476\",\n", - " \"13.176\",\n", - " \"13.057\",\n", - " \"12.083\",\n", - " \"12.152\",\n", - " \"12.268\",\n", - " \"13.012\",\n", - " \"14.098\",\n", - " \"13.152\",\n", + " \"11.408\",\n", + " \"12.616\",\n", + " \"12.470\",\n", + " \"13.174\",\n", + " \"13.064\",\n", + " \"12.093\",\n", + " \"12.168\",\n", + " \"12.279\",\n", + " \"13.014\",\n", + " \"14.096\",\n", + " \"13.151\",\n", " \"11.583\"\n", " ]\n", " },\n", " \"rms_xyt\": {\n", - " \"ann\": \"nan\"\n", + " \"ann\": \"12.593\"\n", " },\n", " \"rms_y\": {\n", " \"ann\": \"2.159\"\n", " },\n", " \"rmsc_xy\": {\n", - " \"ann\": \"9.538\",\n", - " \"djf\": \"10.878\",\n", - " \"mam\": \"11.757\",\n", - " \"jja\": \"11.161\",\n", + " \"ann\": \"9.539\",\n", + " \"djf\": \"10.874\",\n", + " \"mam\": \"11.756\",\n", + " \"jja\": \"11.174\",\n", " \"son\": \"12.527\",\n", " \"CalendarMonths\": [\n", - " \"11.361\",\n", - " \"12.600\",\n", - " \"12.461\",\n", - " \"13.137\",\n", - " \"12.980\",\n", - " \"12.005\",\n", - " \"12.057\",\n", - " \"12.199\",\n", - " \"12.925\",\n", - " \"14.034\",\n", - " \"13.107\",\n", + " \"11.357\",\n", + " \"12.594\",\n", + " \"12.454\",\n", + " \"13.135\",\n", + " \"12.988\",\n", + " \"12.015\",\n", + " \"12.073\",\n", + " \"12.209\",\n", + " \"12.928\",\n", + " \"14.032\",\n", + " \"13.106\",\n", " \"11.540\"\n", " ]\n", " },\n", " \"std-obs_xy\": {\n", - " \"ann\": \"29.644\",\n", - " \"djf\": \"32.736\",\n", - " \"mam\": \"30.775\",\n", - " \"jja\": \"35.361\",\n", - " \"son\": \"31.194\",\n", + " \"ann\": \"29.645\",\n", + " \"djf\": \"32.738\",\n", + " \"mam\": \"30.777\",\n", + " \"jja\": \"35.363\",\n", + " \"son\": \"31.196\",\n", " \"CalendarMonths\": [\n", - " \"33.142\",\n", - " \"33.727\",\n", - " \"32.912\",\n", - " \"31.203\",\n", - " \"31.767\",\n", - " \"34.483\",\n", - " \"36.342\",\n", - " \"36.157\",\n", - " \"34.665\",\n", - " \"31.899\",\n", - " \"30.965\",\n", - " \"32.014\"\n", + " \"33.145\",\n", + " \"33.729\",\n", + " \"32.914\",\n", + " \"31.205\",\n", + " \"31.768\",\n", + " \"34.484\",\n", + " \"36.344\",\n", + " \"36.158\",\n", + " \"34.666\",\n", + " \"31.901\",\n", + " \"30.967\",\n", + " \"32.016\"\n", " ]\n", " },\n", " \"std-obs_xy_devzm\": {\n", - " \"ann\": \"12.976\"\n", + " \"ann\": \"12.980\"\n", " },\n", " \"std-obs_xyt\": {\n", - " \"ann\": \"33.418\"\n", + " \"ann\": \"33.420\"\n", " },\n", " \"std_xy\": {\n", - " \"ann\": \"31.123\",\n", - " \"djf\": \"34.351\",\n", + " \"ann\": \"31.122\",\n", + " \"djf\": \"34.350\",\n", " \"mam\": \"33.081\",\n", - " \"jja\": \"37.357\",\n", + " \"jja\": \"37.358\",\n", " \"son\": \"33.759\",\n", " \"CalendarMonths\": [\n", - " \"35.083\",\n", - " \"36.318\",\n", - " \"35.860\",\n", - " \"33.875\",\n", + " \"35.082\",\n", + " \"36.317\",\n", + " \"35.861\",\n", + " \"33.874\",\n", " \"34.141\",\n", - " \"36.390\",\n", - " \"38.237\",\n", - " \"38.696\",\n", - " \"37.492\",\n", + " \"36.392\",\n", + " \"38.239\",\n", + " \"38.697\",\n", + " \"37.491\",\n", " \"34.881\",\n", - " \"32.548\",\n", - " \"33.053\"\n", + " \"32.550\",\n", + " \"33.054\"\n", " ]\n", " },\n", " \"std_xy_devzm\": {\n", - " \"ann\": \"14.246\"\n", + " \"ann\": \"14.244\"\n", " },\n", " \"std_xyt\": {\n", " \"ann\": \"35.677\"\n", @@ -1331,68 +1424,38 @@ "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:41:28,762 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:41:28,762 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:42::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:42:31,697 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:42:31,697 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:42:31,736 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:42:31,736 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:43::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:43:43,018 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:43:43,018 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", - "2023-11-09 16:43:47,139 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:43:47,139 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:45::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:45:02,114 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:45:02,114 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:45:02,157 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:45:02,157 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:46::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:46:12,238 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "2023-11-09 16:46:12,238 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", - "INFO::2023-11-09 16:46::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", - "2023-11-09 16:46:33,802 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", - "2023-11-09 16:46:33,802 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex2 \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: xesmf \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex2 \n", - " diagnostics_output_path: demo_output/Ex2 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex2\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: xesmf\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex2\n", + "diagnostics_output_path: demo_output_tmp/Ex2\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1400,68 +1463,128 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:33:15,391 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:33:15,391 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.93927790599767\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.60527090825452\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 2.849440160911837\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 7.557470849444263\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 22.607395028695382 22.427104154412426\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.7861025676947934\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.648381662240547\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.549244692371865\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.592896459787895\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.125610428460632\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.860898578606725\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.177708187327104 8.099998137034403\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.96795773835052\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:33::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:33:53,712 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:33:53,712 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:33:53,979 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:33:53,979 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.93927790599767\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 41.277546088282016\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.3070924524925915\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 9.860459737057527\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 31.29959559143669 31.27229114580701\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.6355158166285978\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.59914336644845\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.549244692371865\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.57963901558475\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1527243415926074\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.360708067056379\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.645756369004939 9.576658679806574\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9480905763948829\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:34::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:34:34,539 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n", + "2024-09-23 17:34:34,539 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_alternate1_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1469,66 +1592,129 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:34:36,634 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:34:36,634 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.896082465222186\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.60527090825452\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 2.847343450867303\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 7.551058394040502\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 22.603314702394204 22.42325736391287\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.7861552158165768\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.645235171566236\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.4985130934034\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.592896459787895\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1235015665376828\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.85424526985928\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.166269891908385 8.088741773719214\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9680673356259839\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:35::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:11,725 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:11,725 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_ACCESS1-0__2.5x2.5_xesmf_metrics_default_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:35:11,958 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:35:11,958 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 38.896082465222186\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 41.277546088282016\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.3091891625371264\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 9.862415553120186\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 31.29710758581451 31.269713253797885\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.6355540591449562\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.608701107371159\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.4985130934034\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.57963901558475\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1548230280823464\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.36344180576563\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.64426986778833 9.574909140910318\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9481186093157992\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:35::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:46,498 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "2024-09-23 17:35:46,498 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut/rlut_CanCM4__2.5x2.5_xesmf_metrics_default_Ex2.json\n", + "INFO::2024-09-23 17:35::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", + "2024-09-23 17:35:57,972 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n", + "2024-09-23 17:35:57,972 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex2/rlut_2.5x2.5_xesmf_metrics_Ex2.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -1553,58 +1739,38 @@ "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:46:57,258 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:46:57,258 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:47::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", - "2023-11-09 16:47:57,629 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", - "2023-11-09 16:47:57,629 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", - "2023-11-09 16:48:03,578 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:48:03,578 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:49::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", - "2023-11-09 16:49:02,702 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", - "2023-11-09 16:49:02,702 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", - "INFO::2023-11-09 16:49::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", - "2023-11-09 16:49:21,917 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", - "2023-11-09 16:49:21,917 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex3 \n", - " test_data_set: ['ACCESS1-0'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex3 \n", - " diagnostics_output_path: demo_output/Ex3 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex3\n", + "test_data_set: ['ACCESS1-0']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex3\n", + "diagnostics_output_path: demo_output_tmp/Ex3\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1612,71 +1778,134 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:36:09,348 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:36:09,348 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384451737888808\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.770012023689812\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.044682445768467 7.9637213813349925\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9693780836555635\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", - "'DataArray' object has no attribute 'units'\n", - "units: \n", - "ref_data load_and_regrid done\n", - "=================================\n", - "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", - "-----------------------\n", - "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", - "units: W m-2\n", - "load and regrid done\n", - "region: Global\n", - "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365878854524063\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.763493973471603\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.033820554038556 7.953014565127818\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9694728084795681\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.443886637144088\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384446642039474\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.770267763900403\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.04383979899538 7.962870239960437\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9693832697582581\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:36::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", + "2024-09-23 17:36:45,232 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n", + "2024-09-23 17:36:45,232 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex3.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "ref: default\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "'DataArray' object has no attribute 'units'\n", + "units: \n", + "ref_data load_and_regrid done\n", + "=================================\n", + "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", + "-----------------------\n", + "model, run: ACCESS1-0 \n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:36:46,544 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:36:46,544 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "units: W m-2\n", + "load and regrid done\n", + "region: Global\n", + "compute metrics start\n", + "var: rlut\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.441474434051779\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365873707975822\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.76358422001215\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.032983607315776 7.9521691873316795\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9694779269200444\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:37::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", + "2024-09-23 17:37:23,274 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", + "2024-09-23 17:37:23,274 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex3.json\n", + "INFO::2024-09-23 17:37::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", + "2024-09-23 17:37:35,156 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n", + "2024-09-23 17:37:35,156 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex3/rlut_2.5x2.5_regrid2_metrics_Ex3.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -1702,68 +1931,38 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:49:45,266 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:49:45,266 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:50::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:50:41,150 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:50:41,150 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:50:41,183 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:50:41,183 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:51::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:51:35,777 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:51:35,777 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex4.json\n", - "2023-11-09 16:51:42,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:51:42,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:52::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:52:38,464 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:52:38,464 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:52:38,494 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:52:38,494 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:53::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:53:33,822 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "2023-11-09 16:53:33,822 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex4.json\n", - "INFO::2023-11-09 16:53::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", - "2023-11-09 16:53:54,053 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", - "2023-11-09 16:53:54,053 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex4 \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'MyDomain': {'domain': {'latitude': (20.0, 30)}}} \n", - " regions: {'rlut': ['MyDomain']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex4 \n", - " diagnostics_output_path: demo_output/Ex4 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex4\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'MyDomain': {'domain': {'latitude': (20.0, 30)}}}\n", + "regions: {'rlut': ['MyDomain']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex4\n", + "diagnostics_output_path: demo_output_tmp/Ex4\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1771,70 +1970,52 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:47,533 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:47,533 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.18138602499969\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.561827391039035\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.5946991696333115\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 4.150349791215329\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 5.291037658821646 5.2575100955401215\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9522270778028106\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for ACCESS1-0 \n", + "region_subset() got multiple values for argument 'region'\n", "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:48,558 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:48,558 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.18138602499969\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.245208810088847\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.6638373054433819\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.889229301904497\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 7.248559470317926 7.218097701377931\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9066905099914794\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for CanCM4 \n", + "region_subset() got multiple values for argument 'region'\n", "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -1842,68 +2023,65 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:50,612 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:50,612 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.049296637854248\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.561827391039035\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.5913453737090093\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 4.160780868714007\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 5.294374298855912 5.261246037335545\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9522958639707434\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for ACCESS1-0 \n", + "region_subset() got multiple values for argument 'region'\n", "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:37:51,484 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:37:51,484 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: MyDomain\n", - "spatial subset done\n", - "compute metrics start\n", - "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 19.049296637854248\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 22.245208810088847\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 0.6604835095190796\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.886274128348927\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 7.247367618574384 7.217208527707502\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9068727312282716\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "error occured for CanCM4 \n", + "region_subset() got multiple values for argument 'region'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:38::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", + "2024-09-23 17:38:03,860 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n", + "2024-09-23 17:38:03,860 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex4/rlut_2.5x2.5_regrid2_metrics_Ex4.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -1959,61 +2137,37 @@ "tags": [] }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:54:19,804 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:54:19,804 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:55::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:21,394 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:21,394 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:55::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:54,625 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:55:54,625 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:56::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:56:38,981 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:56:38,981 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:57::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:57:15,946 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "2023-11-09 16:57:15,946 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", - "INFO::2023-11-09 16:57::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", - "2023-11-09 16:57:35,313 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", - "2023-11-09 16:57:35,313 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex5 \n", - " test_data_set: ['CanCM4'] \n", - " realization: \n", - " vars: ['zg_500'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['alternate1'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: False \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex5 \n", - " diagnostics_output_path: demo_output/Ex5 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex5\n", + "test_data_set: ['CanCM4']\n", + "realization: \n", + "vars: ['zg_500']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['alternate1']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: False\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex5\n", + "diagnostics_output_path: demo_output_tmp/Ex5\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: zg\n", "level: 500.0\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/zg/ERA-INT/v20210804/zg_mon_ERA-INT_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/zg/ERA-INT/v20210804/zg_mon_ERA-INT_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -2021,112 +2175,82 @@ "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.zg.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.zg.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:38:15,114 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:38:15,114 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: m\n", "load and regrid done\n", "region: global\n", "compute metrics start\n", "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 266.78874424242247\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 289.171909592503\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -26.72829436270523\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 27.31174888102911\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 36.86848787995158 25.39456002798049\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9982646048078304\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "region: NHEX\n", - "spatial subset done\n", - "compute metrics start\n", - "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 217.77184929408025\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 243.07955688052704\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -33.98470754086787\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 36.12586072486697\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 43.4018204400982 26.99551205063858\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9934590261766263\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "region: SHEX\n", - "spatial subset done\n", - "compute metrics start\n", - "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 283.22012506599816\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 296.6174627856965\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -53.00982429706322\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 53.00982429706322\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 56.8956886480462 20.665863512804005\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9981088912216388\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", - "region: TROPICS\n", - "spatial subset done\n", - "compute metrics start\n", "var: zg\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 28.36627012760418\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 34.43418248863642\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -9.959322806445527\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 10.055655251093725\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 12.575853648293624 7.678800962410827\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9609284596570256\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 43.136407421218316\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 266.7884899432676\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 289.17169839153274\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -26.728290236301323\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 27.30732894422076\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 36.86694958124509 25.392330977484043\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9982653843741294\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:38::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", + "2024-09-23 17:38:50,975 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n", + "2024-09-23 17:38:50,975 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500/zg_500_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex5.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "region: NHEX\n", + "error occured for CanCM4 \n", + "region_subset() got multiple values for argument 'region'\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", + "2024-09-23 17:39:01,774 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n", + "2024-09-23 17:39:01,774 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex5/zg_500_2.5x2.5_regrid2_metrics_Ex5.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -2162,68 +2286,38 @@ "scrolled": true }, "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "2023-11-09 16:58:00,109 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:58:00,109 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 16:58::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 16:58:59,465 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 16:58:59,465 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 16:58:59,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 16:58:59,513 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 17:00::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 17:00:04,816 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 17:00:04,816 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", - "2023-11-09 17:00:10,978 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 17:00:10,978 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 17:01::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:01:07,454 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:01:07,454 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:01:07,496 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "2023-11-09 17:01:07,496 [WARNING]: dataset.py(_is_decodable:670) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", - "INFO::2023-11-09 17:02::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:02:06,691 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "2023-11-09 17:02:06,691 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", - "INFO::2023-11-09 17:02::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", - "2023-11-09 17:02:24,735 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", - "2023-11-09 17:02:24,735 [INFO]: base.py(write:250) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n" - ] - }, { "name": "stdout", "output_type": "stream", "text": [ - "case_id: Ex6 \n", - " test_data_set: ['ACCESS1-0', 'CanCM4'] \n", - " realization: \n", - " vars: ['rlut'] \n", - " varname_in_test_data: None \n", - " reference_data_set: ['all'] \n", - " target_grid: 2.5x2.5 \n", - " regrid_tool: regrid2 \n", - " regrid_tool_ocn: esmf \n", - " save_test_clims: True \n", - " test_clims_interpolated_output: None \n", - " filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc \n", - " sftlf_filename_template: sftlf_%(model_version).nc \n", - " generate_sftlf: True \n", - " regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (310.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}} \n", - " regions: {'rlut': ['Global']} \n", - " test_data_path: demo_data/CMIP5_demo_clims/ \n", - " reference_data_path: demo_data/obs4MIPs_PCMDI_clims \n", - " metrics_output_path: demo_output/Ex6 \n", - " diagnostics_output_path: demo_output/Ex6 \n", - " debug: False \n", - "\n", "--- prepare mean climate metrics calculation ---\n", + "case_id: Ex6\n", + "test_data_set: ['ACCESS1-0', 'CanCM4']\n", + "realization: \n", + "vars: ['rlut']\n", + "varname_in_test_data: None\n", + "reference_data_set: ['all']\n", + "target_grid: 2.5x2.5\n", + "regrid_tool: regrid2\n", + "regrid_tool_ocn: esmf\n", + "save_test_clims: True\n", + "test_clims_interpolated_output: None\n", + "filename_template: cmip5.historical.%(model_version).r1i1p1.mon.%(variable).198101-200512.AC.v20200426.nc\n", + "sftlf_filename_template: sftlf_%(model_version).nc\n", + "generate_sftlf: True\n", + "regions_specs: {'global': {}, 'NHEX': {'domain': {'latitude': (30.0, 90)}}, 'SHEX': {'domain': {'latitude': (-90.0, -30)}}, 'TROPICS': {'domain': {'latitude': (-30.0, 30)}}, '90S50S': {'domain': {'latitude': (-90.0, -50)}}, '50S20S': {'domain': {'latitude': (-50.0, -20)}}, '20S20N': {'domain': {'latitude': (-20.0, 20)}}, '20N50N': {'domain': {'latitude': (20.0, 50)}}, '50N90N': {'domain': {'latitude': (50.0, 90)}}, 'CONUS': {'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'land': {'value': 100}, 'land_NHEX': {'value': 100, 'domain': {'latitude': (30.0, 90)}}, 'land_SHEX': {'value': 100, 'domain': {'latitude': (-90.0, -30)}}, 'land_TROPICS': {'value': 100, 'domain': {'latitude': (-30.0, 30)}}, 'land_CONUS': {'value': 100, 'domain': {'latitude': (24.7, 49.4), 'longitude': (-124.78, -66.92)}}, 'ocean': {'value': 0}, 'ocean_NHEX': {'value': 0, 'domain': {'latitude': (30.0, 90)}}, 'ocean_SHEX': {'value': 0, 'domain': {'latitude': (-90.0, -30)}}, 'ocean_TROPICS': {'value': 0, 'domain': {'latitude': (30.0, 30)}}, 'ocean_50S50N': {'value': 0.0, 'domain': {'latitude': (-50.0, 50)}}, 'ocean_50S20S': {'value': 0.0, 'domain': {'latitude': (-50.0, -20)}}, 'ocean_20S20N': {'value': 0.0, 'domain': {'latitude': (-20.0, 20)}}, 'ocean_20N50N': {'value': 0.0, 'domain': {'latitude': (20.0, 50)}}, 'NAM': {'domain': {'latitude': (20.0, 90), 'longitude': (-180, 180)}}, 'NAO': {'domain': {'latitude': (20.0, 80), 'longitude': (-90, 40)}}, 'SAM': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA1': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PSA2': {'domain': {'latitude': (-20.0, -90), 'longitude': (0, 360)}}, 'PNA': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'NPO': {'domain': {'latitude': (20.0, 85), 'longitude': (120, 240)}}, 'PDO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'NPGO': {'domain': {'latitude': (20.0, 70), 'longitude': (110, 260)}}, 'AMO': {'domain': {'latitude': (0.0, 70), 'longitude': (-80, 0)}}, 'AllMW': {'domain': {'latitude': (-40.0, 45.0), 'longitude': (0.0, 360.0)}}, 'AllM': {'domain': {'latitude': (-45.0, 45.0), 'longitude': (0.0, 360.0)}}, 'NAMM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (210.0, 310.0)}}, 'SAMM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (240.0, 330.0)}}, 'NAFM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (-50.0, 60.0)}}, 'SAFM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (0.0, 90.0)}}, 'ASM': {'domain': {'latitude': (0.0, 45.0), 'longitude': (60.0, 180.0)}}, 'AUSM': {'domain': {'latitude': (-45.0, 0.0), 'longitude': (90.0, 160.0)}}, 'AIR': {'domain': {'latitude': (7.0, 25.0), 'longitude': (65.0, 85.0)}}, 'AUS': {'domain': {'latitude': (-20.0, -10.0), 'longitude': (120.0, 150.0)}}, 'Sahel': {'domain': {'latitude': (13.0, 18.0), 'longitude': (-10.0, 10.0)}}, 'GoG': {'domain': {'latitude': (0.0, 5.0), 'longitude': (-10.0, 10.0)}}, 'NAmo': {'domain': {'latitude': (20.0, 37.0), 'longitude': (-112.0, -103.0)}}, 'SAmo': {'domain': {'latitude': (-20.0, 2.5), 'longitude': (-65.0, -40.0)}}}\n", + "regions: {'rlut': ['Global']}\n", + "test_data_path: demo_data_tmp/CMIP5_demo_clims/\n", + "reference_data_path: demo_data_tmp/obs4MIPs_PCMDI_clims\n", + "metrics_output_path: demo_output_tmp/Ex6\n", + "diagnostics_output_path: demo_output_tmp/Ex6\n", + "debug: False\n", "--- start mean climate metrics calculation ---\n", "varname: rlut\n", "level: None\n", "reference_data_set (all): ['alternate1', 'default']\n", "ref: alternate1\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-0/v20210804/rlut_mon_CERES-EBAF-4-0_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -2231,68 +2325,128 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:39:12,152 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:39:12,152 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384451737888808\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.770012023689812\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.044682445768467 7.9637213813349925\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9693780836555635\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.443886637144088\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1384446642039474\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.770267763900403\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.04383979899538 7.962870239960437\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9693832697582581\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:39::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:39:44,111 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:39:44,111 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:39:44,355 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:39:44,355 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.46854119190699\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635463134324031\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.331106438822097\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.610248337339145 9.539550989529207\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518659641205703\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.581863266319667\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.47036113512534\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1635460184347601\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.33676419779921\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.611035481689909 9.540344002879925\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518562007048922\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:40::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:40:16,040 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n", + "2024-09-23 17:40:16,040 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_alternate1_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "ref: default\n", - "ref_data_full_path: demo_data/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", + "ref_data_full_path: demo_data_tmp/obs4MIPs_PCMDI_clims/rlut/CERES-EBAF-4-1/v20210804/rlut_mon_CERES-EBAF-4-1_PCMDI_gn.200301-201812.AC.v20210804.nc\n", "'DataArray' object has no attribute 'units'\n", "units: \n", "ref_data load_and_regrid done\n", @@ -2300,66 +2454,129 @@ "model, runs, find_all_realizations: ACCESS1-0 [''] False\n", "-----------------------\n", "model, run: ACCESS1-0 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.ACCESS1-0.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:40:17,494 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:40:17,494 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 36.438416968613225\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365878854524063\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 5.763493973471603\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.033820554038556 7.953014565127818\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9694728084795681\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 11.441474434051779\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 36.4380172334105\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: 1.1365873707975822\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 5.76358422001215\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 8.032983607315776 7.9521691873316795\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9694779269200444\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:40::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:40:48,158 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:40:48,158 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_ACCESS1-0__2.5x2.5_regrid2_metrics_default_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "=================================\n", "model, runs, find_all_realizations: CanCM4 [''] False\n", "-----------------------\n", "model, run: CanCM4 \n", - "test_data (model in this case) full_path: demo_data/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n", + "test_data (model in this case) full_path: demo_data_tmp/CMIP5_demo_clims/cmip5.historical.CanCM4.r1i1p1.mon.rlut.198101-200512.AC.v20200426.nc\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "2024-09-23 17:40:48,401 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n", + "2024-09-23 17:40:48,401 [WARNING]: dataset.py(_is_decodable:550) >> 'time' does not have a 'units' attribute set so it could not be decoded. Try setting the 'units' attribute (`ds.{coords.name}.attrs['units']`) and try decoding again.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "units: W m-2\n", "load and regrid done\n", "region: Global\n", "compute metrics start\n", "var: rlut\n", - "compute_metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", - "compute_metrics, rms_xyt\n", - "compute_metrics, rms_xyt: nan\n", - "compute_metrics, stdObs_xyt\n", - "compute_metrics, stdObs_xyt: 33.41842190556023\n", - "compute_metrics, std_xyt\n", - "compute_metrics, std_xyt: 35.67665337064905\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS\n", - "compute_metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.1654036017688774\n", - "compute_metrics-CALCULATE MSE\n", - "compute_metrics-CALCULATE MSE, mae_xy: 6.333692053819536\n", - "compute_metrics-CALCULATE MEAN RMS\n", - "compute_metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.608637289548378 9.537701243333409\n", - "compute_metrics-CALCULATE MEAN CORR\n", - "compute_metrics-CALCULATE MEAN CORR: cor_xy: 0.9518850115349531\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD STD\n", - "compute_metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", - "compute_metrics-CALCULATE ANNUAL MEANS\n", - "compute_metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", - "compute_metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n", + "var: rlut\n", + "metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD\n", + "metrics, rms_xyt\n", + "metrics, rms_xyt: 12.592931277171877\n", + "metrics, stdObs_xyt\n", + "metrics, stdObs_xyt: 33.42022623440726\n", + "metrics, std_xyt\n", + "metrics, std_xyt: 35.676970161763705\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS\n", + "metrics-CALCULATE ANNUAL MEAN BIAS, bias_xy: -1.165403311841126\n", + "metrics-CALCULATE MSE\n", + "metrics-CALCULATE MSE, mae_xy: 6.339387410014902\n", + "metrics-CALCULATE MEAN RMS\n", + "metrics-CALCULATE MEAN RMS: rms_xy, rmsc_xy: 9.609441449405928 9.538511418995654\n", + "metrics-CALCULATE MEAN CORR\n", + "metrics-CALCULATE MEAN CORR: cor_xy: 0.9518750636449926\n", + "metrics-CALCULATE ANNUAL OBS AND MOD STD\n", + "metrics-CALCULATE ANNUAL OBS AND MOD MEAN\n", + "metrics-CALCULATE ANNUAL MEANS\n", + "metrics-CALCULATE ANNUAL AND ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN RMS\n", + "metrics-CALCULATE ANNUAL MEAN DEVIATION FROM ZONAL MEAN STD\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "INFO::2024-09-23 17:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:41:25,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "2024-09-23 17:41:25,289 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut/rlut_CanCM4__2.5x2.5_regrid2_metrics_default_Ex6.json\n", + "INFO::2024-09-23 17:41::pcmdi_metrics:: Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", + "2024-09-23 17:41:42,883 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n", + "2024-09-23 17:41:42,883 [INFO]: base.py(write:422) >> Results saved to a json file: /Users/lee1043/Documents/Research/git/pcmdi_metrics_20230620_pcmdi/pcmdi_metrics/doc/jupyter/Demo/demo_output_tmp/Ex6/rlut_2.5x2.5_regrid2_metrics_Ex6.json\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ "pmp mean clim driver completed\n" ] } @@ -2385,9 +2602,9 @@ ], "metadata": { "kernelspec": { - "display_name": "Python [conda env:pmp_devel_20230223] *", + "display_name": "pmp_devel_20240425", "language": "python", - "name": "conda-env-pmp_devel_20230223-py" + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -2399,7 +2616,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.7" + "version": "3.10.10" }, "selected_variables": [], "vcdat_file_path": "", From ae9bd8b46c732087dd76bdd322aab09407376fbc Mon Sep 17 00:00:00 2001 From: ShixuanZhang Date: Mon, 23 Sep 2024 20:17:19 -0500 Subject: [PATCH 16/17] Propose a general number formula for mean climate metrics output Current compute_metrics.py used either ".5f" or ".3f" to form the floating numbers for the output from the mean climate driver. As the magnitude of the model variable can range from 1e5 (e.g pressure ) to 1e-3 (e.g. humidity), used the ".5f" and ".3f" can sometimes truncate the small values to zero. It seems that using a standard scientific notation can be benificial in case the user processed the data without converting the unit data ahead. In this way, it also provide possibilities for users to convert the units within the diagnostic datasets. --- .../mean_climate/lib/compute_metrics.py | 73 +++++++++---------- 1 file changed, 35 insertions(+), 38 deletions(-) diff --git a/pcmdi_metrics/mean_climate/lib/compute_metrics.py b/pcmdi_metrics/mean_climate/lib/compute_metrics.py index c69c4ad80..b974cfd43 100644 --- a/pcmdi_metrics/mean_climate/lib/compute_metrics.py +++ b/pcmdi_metrics/mean_climate/lib/compute_metrics.py @@ -51,10 +51,7 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): dm = dm.bounds.add_missing_bounds() do = do.bounds.add_missing_bounds() - if var in ["hus"]: - sig_digits = ".5f" - else: - sig_digits = ".3f" + float_format = "{:.5e}" # CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD print("metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD") @@ -156,23 +153,23 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): ): metrics_dictionary[stat] = OrderedDict() - metrics_dictionary["mean-obs_xy"]["ann"] = format(meanObs_xy, sig_digits) - metrics_dictionary["mean_xy"]["ann"] = format(mean_xy, sig_digits) - metrics_dictionary["std-obs_xy"]["ann"] = format(stdObs_xy, sig_digits) - metrics_dictionary["std_xy"]["ann"] = format(std_xy, sig_digits) - metrics_dictionary["std-obs_xyt"]["ann"] = format(stdObs_xyt, sig_digits) - metrics_dictionary["std_xyt"]["ann"] = format(std_xyt, sig_digits) - metrics_dictionary["std-obs_xy_devzm"]["ann"] = format(stdObs_xy_devzm, sig_digits) - metrics_dictionary["std_xy_devzm"]["ann"] = format(std_xy_devzm, sig_digits) - metrics_dictionary["rms_xyt"]["ann"] = format(rms_xyt, sig_digits) - metrics_dictionary["rms_xy"]["ann"] = format(rms_xy, sig_digits) - metrics_dictionary["rmsc_xy"]["ann"] = format(rmsc_xy, sig_digits) - metrics_dictionary["cor_xy"]["ann"] = format(cor_xy, sig_digits) - metrics_dictionary["bias_xy"]["ann"] = format(bias_xy, sig_digits) - metrics_dictionary["mae_xy"]["ann"] = format(mae_xy, sig_digits) + metrics_dictionary["mean-obs_xy"]["ann"] = float_format.format(meanObs_xy) + metrics_dictionary["mean_xy"]["ann"] = float_format.format(mean_xy) + metrics_dictionary["std-obs_xy"]["ann"] = float_format.format(stdObs_xy) + metrics_dictionary["std_xy"]["ann"] = float_format.format(std_xy) + metrics_dictionary["std-obs_xyt"]["ann"] = float_format.format(stdObs_xyt) + metrics_dictionary["std_xyt"]["ann"] = float_format.format(std_xyt) + metrics_dictionary["std-obs_xy_devzm"]["ann"] = float_format.format(stdObs_xy_devzm) + metrics_dictionary["std_xy_devzm"]["ann"] = float_format.format(std_xy_devzm) + metrics_dictionary["rms_xyt"]["ann"] = float_format.format(rms_xyt) + metrics_dictionary["rms_xy"]["ann"] = float_format.format(rms_xy) + metrics_dictionary["rmsc_xy"]["ann"] = float_format.format(rmsc_xy) + metrics_dictionary["cor_xy"]["ann"] = float_format.format(cor_xy) + metrics_dictionary["bias_xy"]["ann"] = float_format.format(bias_xy) + metrics_dictionary["mae_xy"]["ann"] = float_format.format(mae_xy) # ZONAL MEAN CONTRIBUTIONS - metrics_dictionary["rms_y"]["ann"] = format(rms_y, sig_digits) - metrics_dictionary["rms_devzm"]["ann"] = format(rms_xy_devzm, sig_digits) + metrics_dictionary["rms_y"]["ann"] = float_format.format(rms_y) + metrics_dictionary["rms_devzm"]["ann"] = float_format.format(rms_xy_devzm) # CALCULATE SEASONAL MEANS for sea in ["djf", "mam", "jja", "son"]: @@ -194,15 +191,15 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): meanObs_xy_sea = stats.mean_xy(do_sea, var) mean_xy_sea = stats.mean_xy(dm_sea, var) - metrics_dictionary["bias_xy"][sea] = format(bias_sea, sig_digits) - metrics_dictionary["rms_xy"][sea] = format(rms_sea, sig_digits) - metrics_dictionary["rmsc_xy"][sea] = format(rmsc_sea, sig_digits) - metrics_dictionary["cor_xy"][sea] = format(cor_sea, sig_digits) - metrics_dictionary["mae_xy"][sea] = format(mae_sea, sig_digits) - metrics_dictionary["std-obs_xy"][sea] = format(stdObs_xy_sea, sig_digits) - metrics_dictionary["std_xy"][sea] = format(std_xy_sea, sig_digits) - metrics_dictionary["mean-obs_xy"][sea] = format(meanObs_xy_sea, sig_digits) - metrics_dictionary["mean_xy"][sea] = format(mean_xy_sea, sig_digits) + metrics_dictionary["bias_xy"][sea] = float_format.format(bias_sea) + metrics_dictionary["rms_xy"][sea] = float_format.format(rms_sea) + metrics_dictionary["rmsc_xy"][sea] = float_format.format(rmsc_sea) + metrics_dictionary["cor_xy"][sea] = float_format.format(cor_sea) + metrics_dictionary["mae_xy"][sea] = float_format.format(mae_sea) + metrics_dictionary["std-obs_xy"][sea] = float_format.format(stdObs_xy_sea) + metrics_dictionary["std_xy"][sea] = float_format.format(std_xy_sea) + metrics_dictionary["mean-obs_xy"][sea] = float_format.format(meanObs_xy_sea) + metrics_dictionary["mean_xy"][sea] = float_format.format(mean_xy_sea) rms_mo_l = [] rmsc_mo_l = [] @@ -248,15 +245,15 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): meanObs_xy_mo = stats.mean_xy(do_mo, var) mean_xy_mo = stats.mean_xy(dm_mo, var) - rms_mo_l.append(format(rms_mo, sig_digits)) - rmsc_mo_l.append(format(rmsc_mo, sig_digits)) - cor_mo_l.append(format(cor_mo, sig_digits)) - mae_mo_l.append(format(mae_mo, sig_digits)) - bias_mo_l.append(format(bias_mo, sig_digits)) - stdObs_xy_mo_l.append(format(stdObs_xy_mo, sig_digits)) - std_xy_mo_l.append(format(std_xy_mo, sig_digits)) - meanObs_xy_mo_l.append(format(meanObs_xy_mo, sig_digits)) - mean_xy_mo_l.append(format(mean_xy_mo, sig_digits)) + rms_mo_l.append(float_format.format(rms_mo)) + rmsc_mo_l.append(float_format.format(rmsc_mo)) + cor_mo_l.append(float_format.format(cor_mo)) + mae_mo_l.append(float_format.format(mae_mo)) + bias_mo_l.append(float_format.format(bias_mo)) + stdObs_xy_mo_l.append(float_format.format(stdObs_xy_mo)) + std_xy_mo_l.append(float_format.format(std_xy_mo)) + meanObs_xy_mo_l.append(float_format.format(meanObs_xy_mo)) + mean_xy_mo_l.append(float_format.format(mean_xy_mo)) metrics_dictionary["bias_xy"]["CalendarMonths"] = bias_mo_l metrics_dictionary["rms_xy"]["CalendarMonths"] = rms_mo_l From c2ba107cd89ffb84293398aeb319c5382b9cd2ca Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Tue, 24 Sep 2024 08:58:28 -0700 Subject: [PATCH 17/17] Revert "Propose a general number formula for mean climate metrics output" This reverts commit ae9bd8b46c732087dd76bdd322aab09407376fbc. --- .../mean_climate/lib/compute_metrics.py | 73 ++++++++++--------- 1 file changed, 38 insertions(+), 35 deletions(-) diff --git a/pcmdi_metrics/mean_climate/lib/compute_metrics.py b/pcmdi_metrics/mean_climate/lib/compute_metrics.py index b974cfd43..c69c4ad80 100644 --- a/pcmdi_metrics/mean_climate/lib/compute_metrics.py +++ b/pcmdi_metrics/mean_climate/lib/compute_metrics.py @@ -51,7 +51,10 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): dm = dm.bounds.add_missing_bounds() do = do.bounds.add_missing_bounds() - float_format = "{:.5e}" + if var in ["hus"]: + sig_digits = ".5f" + else: + sig_digits = ".3f" # CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD print("metrics-CALCULATE ANNUAL CYCLE SPACE-TIME RMS, CORRELATIONS and STD") @@ -153,23 +156,23 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): ): metrics_dictionary[stat] = OrderedDict() - metrics_dictionary["mean-obs_xy"]["ann"] = float_format.format(meanObs_xy) - metrics_dictionary["mean_xy"]["ann"] = float_format.format(mean_xy) - metrics_dictionary["std-obs_xy"]["ann"] = float_format.format(stdObs_xy) - metrics_dictionary["std_xy"]["ann"] = float_format.format(std_xy) - metrics_dictionary["std-obs_xyt"]["ann"] = float_format.format(stdObs_xyt) - metrics_dictionary["std_xyt"]["ann"] = float_format.format(std_xyt) - metrics_dictionary["std-obs_xy_devzm"]["ann"] = float_format.format(stdObs_xy_devzm) - metrics_dictionary["std_xy_devzm"]["ann"] = float_format.format(std_xy_devzm) - metrics_dictionary["rms_xyt"]["ann"] = float_format.format(rms_xyt) - metrics_dictionary["rms_xy"]["ann"] = float_format.format(rms_xy) - metrics_dictionary["rmsc_xy"]["ann"] = float_format.format(rmsc_xy) - metrics_dictionary["cor_xy"]["ann"] = float_format.format(cor_xy) - metrics_dictionary["bias_xy"]["ann"] = float_format.format(bias_xy) - metrics_dictionary["mae_xy"]["ann"] = float_format.format(mae_xy) + metrics_dictionary["mean-obs_xy"]["ann"] = format(meanObs_xy, sig_digits) + metrics_dictionary["mean_xy"]["ann"] = format(mean_xy, sig_digits) + metrics_dictionary["std-obs_xy"]["ann"] = format(stdObs_xy, sig_digits) + metrics_dictionary["std_xy"]["ann"] = format(std_xy, sig_digits) + metrics_dictionary["std-obs_xyt"]["ann"] = format(stdObs_xyt, sig_digits) + metrics_dictionary["std_xyt"]["ann"] = format(std_xyt, sig_digits) + metrics_dictionary["std-obs_xy_devzm"]["ann"] = format(stdObs_xy_devzm, sig_digits) + metrics_dictionary["std_xy_devzm"]["ann"] = format(std_xy_devzm, sig_digits) + metrics_dictionary["rms_xyt"]["ann"] = format(rms_xyt, sig_digits) + metrics_dictionary["rms_xy"]["ann"] = format(rms_xy, sig_digits) + metrics_dictionary["rmsc_xy"]["ann"] = format(rmsc_xy, sig_digits) + metrics_dictionary["cor_xy"]["ann"] = format(cor_xy, sig_digits) + metrics_dictionary["bias_xy"]["ann"] = format(bias_xy, sig_digits) + metrics_dictionary["mae_xy"]["ann"] = format(mae_xy, sig_digits) # ZONAL MEAN CONTRIBUTIONS - metrics_dictionary["rms_y"]["ann"] = float_format.format(rms_y) - metrics_dictionary["rms_devzm"]["ann"] = float_format.format(rms_xy_devzm) + metrics_dictionary["rms_y"]["ann"] = format(rms_y, sig_digits) + metrics_dictionary["rms_devzm"]["ann"] = format(rms_xy_devzm, sig_digits) # CALCULATE SEASONAL MEANS for sea in ["djf", "mam", "jja", "son"]: @@ -191,15 +194,15 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): meanObs_xy_sea = stats.mean_xy(do_sea, var) mean_xy_sea = stats.mean_xy(dm_sea, var) - metrics_dictionary["bias_xy"][sea] = float_format.format(bias_sea) - metrics_dictionary["rms_xy"][sea] = float_format.format(rms_sea) - metrics_dictionary["rmsc_xy"][sea] = float_format.format(rmsc_sea) - metrics_dictionary["cor_xy"][sea] = float_format.format(cor_sea) - metrics_dictionary["mae_xy"][sea] = float_format.format(mae_sea) - metrics_dictionary["std-obs_xy"][sea] = float_format.format(stdObs_xy_sea) - metrics_dictionary["std_xy"][sea] = float_format.format(std_xy_sea) - metrics_dictionary["mean-obs_xy"][sea] = float_format.format(meanObs_xy_sea) - metrics_dictionary["mean_xy"][sea] = float_format.format(mean_xy_sea) + metrics_dictionary["bias_xy"][sea] = format(bias_sea, sig_digits) + metrics_dictionary["rms_xy"][sea] = format(rms_sea, sig_digits) + metrics_dictionary["rmsc_xy"][sea] = format(rmsc_sea, sig_digits) + metrics_dictionary["cor_xy"][sea] = format(cor_sea, sig_digits) + metrics_dictionary["mae_xy"][sea] = format(mae_sea, sig_digits) + metrics_dictionary["std-obs_xy"][sea] = format(stdObs_xy_sea, sig_digits) + metrics_dictionary["std_xy"][sea] = format(std_xy_sea, sig_digits) + metrics_dictionary["mean-obs_xy"][sea] = format(meanObs_xy_sea, sig_digits) + metrics_dictionary["mean_xy"][sea] = format(mean_xy_sea, sig_digits) rms_mo_l = [] rmsc_mo_l = [] @@ -245,15 +248,15 @@ def compute_metrics(Var, dm, do, debug=False, time_dim_sync=False): meanObs_xy_mo = stats.mean_xy(do_mo, var) mean_xy_mo = stats.mean_xy(dm_mo, var) - rms_mo_l.append(float_format.format(rms_mo)) - rmsc_mo_l.append(float_format.format(rmsc_mo)) - cor_mo_l.append(float_format.format(cor_mo)) - mae_mo_l.append(float_format.format(mae_mo)) - bias_mo_l.append(float_format.format(bias_mo)) - stdObs_xy_mo_l.append(float_format.format(stdObs_xy_mo)) - std_xy_mo_l.append(float_format.format(std_xy_mo)) - meanObs_xy_mo_l.append(float_format.format(meanObs_xy_mo)) - mean_xy_mo_l.append(float_format.format(mean_xy_mo)) + rms_mo_l.append(format(rms_mo, sig_digits)) + rmsc_mo_l.append(format(rmsc_mo, sig_digits)) + cor_mo_l.append(format(cor_mo, sig_digits)) + mae_mo_l.append(format(mae_mo, sig_digits)) + bias_mo_l.append(format(bias_mo, sig_digits)) + stdObs_xy_mo_l.append(format(stdObs_xy_mo, sig_digits)) + std_xy_mo_l.append(format(std_xy_mo, sig_digits)) + meanObs_xy_mo_l.append(format(meanObs_xy_mo, sig_digits)) + mean_xy_mo_l.append(format(mean_xy_mo, sig_digits)) metrics_dictionary["bias_xy"]["CalendarMonths"] = bias_mo_l metrics_dictionary["rms_xy"]["CalendarMonths"] = rms_mo_l