From 98b0a361ca730ef332c58e09382bb00a3aa791b1 Mon Sep 17 00:00:00 2001 From: Ana Ordonez Date: Wed, 8 May 2024 13:48:53 -0700 Subject: [PATCH 1/8] fix nan bug --- pcmdi_metrics/sea_ice/sea_ice_driver.py | 37 ++++++++++--------------- 1 file changed, 15 insertions(+), 22 deletions(-) diff --git a/pcmdi_metrics/sea_ice/sea_ice_driver.py b/pcmdi_metrics/sea_ice/sea_ice_driver.py index 64471a6c7..728a9d1fb 100644 --- a/pcmdi_metrics/sea_ice/sea_ice_driver.py +++ b/pcmdi_metrics/sea_ice/sea_ice_driver.py @@ -228,14 +228,14 @@ end_year = meyear real_clim = { - "arctic": {"model_mean": None}, - "ca": {"model_mean": None}, - "na": {"model_mean": None}, - "np": {"model_mean": None}, - "antarctic": {"model_mean": None}, - "sp": {"model_mean": None}, - "sa": {"model_mean": None}, - "io": {"model_mean": None}, + "arctic": {"model_mean": {}}, + "ca": {"model_mean": {}}, + "na": {"model_mean": {}}, + "np": {"model_mean": {}}, + "antarctic": {"model_mean": {}}, + "sp": {"model_mean": {}}, + "sa": {"model_mean": {}}, + "io": {"model_mean": {}}, } real_mean = { "arctic": {"model_mean": 0}, @@ -301,6 +301,7 @@ if len(list_of_runs) > 0: # Loop over realizations + real_count = len(list_of_runs) for run_ind, run in enumerate(list_of_runs): # Find model data, determine number of files, check if they exist tags = { @@ -365,16 +366,7 @@ # Running sum of all realizations for rgn in clims: real_clim[rgn][run] = clims[rgn] - if real_clim[rgn]["model_mean"] is None: - real_clim[rgn]["model_mean"] = clims[rgn] - else: - real_clim[rgn]["model_mean"][var] = ( - real_clim[rgn]["model_mean"][var] + clims[rgn][var] - ) real_mean[rgn][run] = means[rgn] - real_mean[rgn]["model_mean"] = ( - real_mean[rgn]["model_mean"] + means[rgn] - ) print("\n-------------------------------------------") print("Calculating model regional average metrics \nfor ", model) @@ -382,12 +374,12 @@ for rgn in real_clim: print(rgn) # Get model mean - real_clim[rgn]["model_mean"][var] = real_clim[rgn]["model_mean"][ - var - ] / len(list_of_runs) - real_mean[rgn]["model_mean"] = real_mean[rgn]["model_mean"] / len( - list_of_runs + datalist = [real_clim[rgn][r][var].data for r in list_of_runs] + real_clim[rgn]["model_mean"][var] = np.nanmean( + np.array(datalist), axis=0 ) + datalist = [real_mean[rgn][r] for r in list_of_runs] + real_mean[rgn]["model_mean"] = np.nanmean(np.array(datalist)) for run in real_clim[rgn]: # Set up metrics dictionary @@ -433,6 +425,7 @@ ) * 1e-12 ) + mse[model][rgn][run][reference_data_set]["total_extent"][ "mse" ] = str( From ed23abd1043b31336fa63faadba056f69cd33dd1 Mon Sep 17 00:00:00 2001 From: Ana Ordonez Date: Wed, 8 May 2024 13:51:05 -0700 Subject: [PATCH 2/8] remove extraneous --- pcmdi_metrics/sea_ice/sea_ice_driver.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pcmdi_metrics/sea_ice/sea_ice_driver.py b/pcmdi_metrics/sea_ice/sea_ice_driver.py index 728a9d1fb..fd37b47ef 100644 --- a/pcmdi_metrics/sea_ice/sea_ice_driver.py +++ b/pcmdi_metrics/sea_ice/sea_ice_driver.py @@ -301,7 +301,6 @@ if len(list_of_runs) > 0: # Loop over realizations - real_count = len(list_of_runs) for run_ind, run in enumerate(list_of_runs): # Find model data, determine number of files, check if they exist tags = { From ea4a7731d3b8b843bdba78497bdb0fc23231936c Mon Sep 17 00:00:00 2001 From: Ana Ordonez Date: Wed, 8 May 2024 13:51:42 -0700 Subject: [PATCH 3/8] remove line --- pcmdi_metrics/sea_ice/sea_ice_driver.py | 1 - 1 file changed, 1 deletion(-) diff --git a/pcmdi_metrics/sea_ice/sea_ice_driver.py b/pcmdi_metrics/sea_ice/sea_ice_driver.py index fd37b47ef..4d190e4cd 100644 --- a/pcmdi_metrics/sea_ice/sea_ice_driver.py +++ b/pcmdi_metrics/sea_ice/sea_ice_driver.py @@ -424,7 +424,6 @@ ) * 1e-12 ) - mse[model][rgn][run][reference_data_set]["total_extent"][ "mse" ] = str( From 077d60e2b2107a6b5c4295774ec6e977db940b3c Mon Sep 17 00:00:00 2001 From: Ana Ordonez Date: Thu, 16 May 2024 16:41:37 -0700 Subject: [PATCH 4/8] add multiple version --- pcmdi_metrics/sea_ice/sea_ice_driver.py | 45 +++++++++++++++++-------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/pcmdi_metrics/sea_ice/sea_ice_driver.py b/pcmdi_metrics/sea_ice/sea_ice_driver.py index 4d190e4cd..741847964 100644 --- a/pcmdi_metrics/sea_ice/sea_ice_driver.py +++ b/pcmdi_metrics/sea_ice/sea_ice_driver.py @@ -228,14 +228,14 @@ end_year = meyear real_clim = { - "arctic": {"model_mean": {}}, - "ca": {"model_mean": {}}, - "na": {"model_mean": {}}, - "np": {"model_mean": {}}, - "antarctic": {"model_mean": {}}, - "sp": {"model_mean": {}}, - "sa": {"model_mean": {}}, - "io": {"model_mean": {}}, + "arctic": {"model_mean": None}, + "ca": {"model_mean": None}, + "na": {"model_mean": None}, + "np": {"model_mean": None}, + "antarctic": {"model_mean": None}, + "sp": {"model_mean": None}, + "sa": {"model_mean": None}, + "io": {"model_mean": None}, } real_mean = { "arctic": {"model_mean": 0}, @@ -309,7 +309,15 @@ "%(model_version)": model, "%(realization)": run, } - test_data_full_path = os.path.join(test_data_path, filename_template) + test_data_tmp = lib.replace_multi(test_data_path, tags) + if "*" in test_data_tmp: + # Get the most recent version for last wildcard + ind = test_data_tmp.split("/")[::-1].index("*") + tmp1 = "/".join(test_data_tmp.split("/")[0:-ind]) + globbed = glob.glob(tmp1) + globbed.sort() + test_data_tmp = globbed[-1] + test_data_full_path = os.path.join(test_data_tmp, filename_template) test_data_full_path = lib.replace_multi(test_data_full_path, tags) test_data_full_path = glob.glob(test_data_full_path) test_data_full_path.sort() @@ -365,7 +373,16 @@ # Running sum of all realizations for rgn in clims: real_clim[rgn][run] = clims[rgn] + if real_clim[rgn]["model_mean"] is None: + real_clim[rgn]["model_mean"] = clims[rgn] + else: + real_clim[rgn]["model_mean"][var] = ( + real_clim[rgn]["model_mean"][var] + clims[rgn][var] + ) real_mean[rgn][run] = means[rgn] + real_mean[rgn]["model_mean"] = ( + real_mean[rgn]["model_mean"] + means[rgn] + ) print("\n-------------------------------------------") print("Calculating model regional average metrics \nfor ", model) @@ -373,12 +390,12 @@ for rgn in real_clim: print(rgn) # Get model mean - datalist = [real_clim[rgn][r][var].data for r in list_of_runs] - real_clim[rgn]["model_mean"][var] = np.nanmean( - np.array(datalist), axis=0 + real_clim[rgn]["model_mean"][var] = real_clim[rgn]["model_mean"][ + var + ] / len(list_of_runs) + real_mean[rgn]["model_mean"] = real_mean[rgn]["model_mean"] / len( + list_of_runs ) - datalist = [real_mean[rgn][r] for r in list_of_runs] - real_mean[rgn]["model_mean"] = np.nanmean(np.array(datalist)) for run in real_clim[rgn]: # Set up metrics dictionary From 3fd3ecfacaf912de78e692ab74e036a67c09b19a Mon Sep 17 00:00:00 2001 From: Ana Ordonez Date: Thu, 16 May 2024 16:48:47 -0700 Subject: [PATCH 5/8] reapply nan fix --- pcmdi_metrics/sea_ice/sea_ice_driver.py | 35 +++++++++---------------- 1 file changed, 13 insertions(+), 22 deletions(-) diff --git a/pcmdi_metrics/sea_ice/sea_ice_driver.py b/pcmdi_metrics/sea_ice/sea_ice_driver.py index 741847964..b62da14c6 100644 --- a/pcmdi_metrics/sea_ice/sea_ice_driver.py +++ b/pcmdi_metrics/sea_ice/sea_ice_driver.py @@ -228,14 +228,14 @@ end_year = meyear real_clim = { - "arctic": {"model_mean": None}, - "ca": {"model_mean": None}, - "na": {"model_mean": None}, - "np": {"model_mean": None}, - "antarctic": {"model_mean": None}, - "sp": {"model_mean": None}, - "sa": {"model_mean": None}, - "io": {"model_mean": None}, + "arctic": {"model_mean": {}}, + "ca": {"model_mean": {}}, + "na": {"model_mean": {}}, + "np": {"model_mean": {}}, + "antarctic": {"model_mean": {}}, + "sp": {"model_mean": {}}, + "sa": {"model_mean": {}}, + "io": {"model_mean": {}}, } real_mean = { "arctic": {"model_mean": 0}, @@ -373,16 +373,7 @@ # Running sum of all realizations for rgn in clims: real_clim[rgn][run] = clims[rgn] - if real_clim[rgn]["model_mean"] is None: - real_clim[rgn]["model_mean"] = clims[rgn] - else: - real_clim[rgn]["model_mean"][var] = ( - real_clim[rgn]["model_mean"][var] + clims[rgn][var] - ) real_mean[rgn][run] = means[rgn] - real_mean[rgn]["model_mean"] = ( - real_mean[rgn]["model_mean"] + means[rgn] - ) print("\n-------------------------------------------") print("Calculating model regional average metrics \nfor ", model) @@ -390,12 +381,12 @@ for rgn in real_clim: print(rgn) # Get model mean - real_clim[rgn]["model_mean"][var] = real_clim[rgn]["model_mean"][ - var - ] / len(list_of_runs) - real_mean[rgn]["model_mean"] = real_mean[rgn]["model_mean"] / len( - list_of_runs + datalist = [real_clim[rgn][r][var].data for r in list_of_runs] + real_clim[rgn]["model_mean"][var] = np.nanmean( + np.array(datalist), axis=0 ) + datalist = [real_mean[rgn][r] for r in list_of_runs] + real_mean[rgn]["model_mean"] = np.nanmean(np.array(datalist)) for run in real_clim[rgn]: # Set up metrics dictionary From dc0b4e5a98071ba2e39f6e5d9f4a82cc33c63f26 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Fri, 31 May 2024 15:48:32 -0700 Subject: [PATCH 6/8] Update reference paper info --- docs/index.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.rst b/docs/index.rst index 4e3ae8b00..a4f41bd27 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -39,7 +39,7 @@ such as datasets from the `obs4MIPs`_ project. References ========== -Lee, J., P. J. Gleckler, M.-S. Ahn, A. Ordonez, P. Ullrich, K. R. Sperber, K. E. Taylor, Y. Y. Planton, E. Guilyardi, P. Durack, C. Bonfils, M. D. Zelinka, L.-W. Chao, B. Dong, C. Doutriaux, C. Zhang, T. Vo, J. Boutte, M. F. Wehner, A. G. Pendergrass, D. Kim, Z. Xue, A. T. Wittenberg, and J. Krasting, 2024: Systematic and Objective Evaluation of Earth System Models: PCMDI Metrics Package (PMP) version 3. Geoscientific Model Development (accepted, publication in progress) [`preprint`_]. +Lee, J., P. J. Gleckler, M.-S. Ahn, A. Ordonez, P. Ullrich, K. R. Sperber, K. E. Taylor, Y. Y. Planton, E. Guilyardi, P. Durack, C. Bonfils, M. D. Zelinka, L.-W. Chao, B. Dong, C. Doutriaux, C. Zhang, T. Vo, J. Boutte, M. F. Wehner, A. G. Pendergrass, D. Kim, Z. Xue, A. T. Wittenberg, and J. Krasting, 2024: Systematic and Objective Evaluation of Earth System Models: PCMDI Metrics Package (PMP) version 3. Geoscientific Model Development, 17, 3919–3948, https://doi.org/10.5194/gmd-17-3919-2024. Gleckler et al. (2016), A more powerful reality test for climate models, Eos, 97, `doi:10.1029/2016EO051663 `_. From 8956329e76d685ffeecf869fc58d185bc8718861 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Fri, 31 May 2024 15:53:09 -0700 Subject: [PATCH 7/8] Update metrics.rst --- docs/metrics.rst | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/metrics.rst b/docs/metrics.rst index 31653a49d..546c99bdf 100644 --- a/docs/metrics.rst +++ b/docs/metrics.rst @@ -21,3 +21,4 @@ A suite of demo scripts and interactive Jupyter notebooks are provided with `thi metrics_precip-distribution metrics_subdaily-precipitation metrics_sea_ice + Cloud Feedbacks From 61b8860d5a83cc1fb42dbc2bbbf1c3fc5b91ca27 Mon Sep 17 00:00:00 2001 From: Jiwoo Lee Date: Fri, 31 May 2024 16:06:54 -0700 Subject: [PATCH 8/8] Update metrics.rst --- docs/metrics.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/metrics.rst b/docs/metrics.rst index 546c99bdf..60a2bd7f5 100644 --- a/docs/metrics.rst +++ b/docs/metrics.rst @@ -21,4 +21,4 @@ A suite of demo scripts and interactive Jupyter notebooks are provided with `thi metrics_precip-distribution metrics_subdaily-precipitation metrics_sea_ice - Cloud Feedbacks + Cloud Feedbacks