From 22bdc0d3798759cae346122d1751f0c6e7aaa7ac Mon Sep 17 00:00:00 2001 From: mvertens Date: Wed, 22 Jul 2026 19:43:01 +0200 Subject: [PATCH 01/12] addition of observational formulas --- lib/adf_dataset.py | 105 ++++++++++++++++++++--- lib/adf_variable_defaults.yaml | 66 +------------- lib/adf_variable_defaults_era5-1deg.yaml | 2 - lib/adf_variable_defaults_noresm.yaml | 16 ++-- 4 files changed, 105 insertions(+), 84 deletions(-) diff --git a/lib/adf_dataset.py b/lib/adf_dataset.py index 9b87ecc2f..4958272e5 100644 --- a/lib/adf_dataset.py +++ b/lib/adf_dataset.py @@ -5,6 +5,7 @@ import xarray as xr import adf_utils as utils +from adf_formula import safe_eval warnings.formatwarning = utils.my_formatwarning # "reference data" @@ -267,7 +268,12 @@ def load_reference_climo_da(self, case, variablename): """Return DataArray from reference (aka baseline) climo file""" add_offset, scale_factor = self.get_value_converters(case, variablename) fils = self.get_reference_climo_file(variablename) - return self.load_da(fils, variablename, add_offset=add_offset, scale_factor=scale_factor) + # For obs, the field may be stored under a different name (obs_var_name); + # pass it for the direct read while keeping the ADF name for the lookups. + obs_name = self.ref_var_nam.get(variablename) if self.adf.compare_obs else None + return self.load_da(fils, variablename, derive_obs=self.adf.compare_obs, + obs_var_name=obs_name, + add_offset=add_offset, scale_factor=scale_factor) def get_reference_climo_file(self, var): """Return a list of files to be used as reference (aka baseline) for variable var.""" @@ -353,11 +359,13 @@ def load_reference_regrid_da(self, case, field): warnings.warn("\t WARNING: Did not find regridded file(s) for case: " f"{case}, variable: {field}") return None - #Change the variable name from CAM standard to what is - # listed in variable defaults for this observation field - if self.adf.compare_obs: - field = self.ref_var_nam[field] - return self.load_da(fils, field, add_offset=add_offset, scale_factor=scale_factor) + # For obs, the field may be stored under a different name (obs_var_name); + # pass it for the direct read while keeping the ADF name (field) for the + # derivation and units lookups. + obs_name = self.ref_var_nam.get(field) if self.adf.compare_obs else None + return self.load_da(fils, field, derive_obs=self.adf.compare_obs, + obs_var_name=obs_name, + add_offset=add_offset, scale_factor=scale_factor) #------------------ @@ -383,17 +391,90 @@ def load_dataset(self, fils, decode_times=True): warnings.warn("\t WARNING: invalid data on load_dataset") return ds + def derive_obs_from_formula(self, ds, variablename): + """Compute an observational `variablename` from an obs-specific formula. + + This is the single, consistent mechanism for transforming observational + data into a model-comparable field. It covers both: + * derivation from constituents - e.g. PRECT = PRECC + PRECL, and + * unit conversion / scaling - e.g. BURDENSO4 = BURDENSO4 * 1e6 + (a "self-reference" formula), replacing obs_scale_factor/obs_add_offset. + Arbitrary combinations are allowed, e.g. "(PRECC + PRECL) * 86400 * 1000". + + It uses observation-specific variable-defaults attributes, deliberately + independent of the model attributes because obs names/formula may differ: + derivable_from_obs - input variable names as they appear in the obs file + derivation_formula_obs - formula written in terms of those obs names + + `variablename` is the ADF variable name (the variable_defaults key), so the + lookup is independent of obs_var_name (which only names the stored obs field). + + Returns a DataArray (named `variablename`) or None if no usable obs formula + is provided or its inputs are not all present in the file. + """ + vres = self.adf.variable_defaults.get(variablename, {}) + constits = vres.get("derivable_from_obs") + formula = vres.get("derivation_formula_obs") + if not constits or not formula: + return None + if not all(c in ds.data_vars for c in constits): + return None + da = safe_eval(formula, {c: ds[c] for c in constits}) + da.name = variablename + return da + # Load DataArray - def load_da(self, fils, variablename, **kwargs): - """Return xarray DataArray from file(s) w/ optional scale factor, offset, new units.""" + def load_da(self, fils, variablename, derive_obs=False, obs_var_name=None, **kwargs): + """Return xarray DataArray from file(s) w/ optional scale factor, offset, new units. + + `variablename` is the ADF variable name (the variable_defaults key) and is used + for the derivation and units lookups. `obs_var_name`, if given, is the name the + variable is stored under in the obs file and is used only for the direct read + (observations may store a field under a different name than ADF uses). + + When derive_obs is True and a derivation_formula_obs is provided for the + variable, that formula fully defines the transform from the obs file (any + combination of derivation from constituents and unit conversion), so it is + applied and the obs_scale_factor/obs_add_offset step is skipped. If no + obs formula is provided, behavior is unchanged: read the variable directly + and apply scale_factor/add_offset (the obs_* values for observations). + """ ds = self.load_dataset(fils) if ds is None: warnings.warn(f"\t WARNING: Load failed for {variablename}") return None - da = ds[variablename].squeeze() - scale_factor = kwargs.get('scale_factor', 1) - add_offset = kwargs.get('add_offset', 0) - da = da * scale_factor + add_offset + + # Name of the field as stored in the file (obs may rename it); the ADF name + # (variablename) is always used for the derivation and defaults/units lookups. + read_name = obs_var_name if obs_var_name else variablename + + # Observations: prefer a derivation_formula_obs when present - it fully + # defines the transform (derivation and/or scaling), so scale/offset is skipped. + da = None + applied_obs_formula = False + if derive_obs: + da = self.derive_obs_from_formula(ds, variablename) + if da is not None: + da = da.squeeze() + applied_obs_formula = True + + if da is None: + if read_name in ds.data_vars: + da = ds[read_name].squeeze() + elif derive_obs: + warnings.warn(f"\t WARNING: obs variable {variablename} (file name " + f"'{read_name}') not found and no usable derivation_formula_obs " + "was provided.") + return None + else: + # Preserve prior behavior (raises if the variable is genuinely missing). + da = ds[read_name].squeeze() + + # Apply scale/offset only when an obs formula did not already define the transform. + if not applied_obs_formula: + scale_factor = kwargs.get('scale_factor', 1) + add_offset = kwargs.get('add_offset', 0) + da = da * scale_factor + add_offset if variablename in self.adf.variable_defaults: vres = self.adf.variable_defaults[variablename] da.attrs['units'] = vres.get("new_unit", da.attrs.get('units', 'none')) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index 7b8803aaf..10cb6d3a2 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -1040,8 +1040,6 @@ CLDTOT: contour_levels_range: [0.2, 1.1, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1055,8 +1053,6 @@ CLDLOW: contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1070,8 +1066,6 @@ CLDHGH: contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1085,8 +1079,6 @@ CLDMED: contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1128,8 +1120,8 @@ TGCLDLWP: obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" obs_name: "ERA5" obs_var_name: "TGCLDLWP" - obs_scale_factor: 1000 - obs_add_offset: 0 + derivable_from_obs: ['TGCLDWP'] + derivation_formula_obs: "TGCLDWP * 1e3" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1148,8 +1140,8 @@ TGCLDIWP: obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" obs_name: "ERA5" obs_var_name: "TGCLDIWP" - obs_scale_factor: 1000 - obs_add_offset: 0 + derivable_from_obs: ['TGCLDIWP'] + derivation_formula_obs: "TGCLDIWP * 1e3" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1312,8 +1304,6 @@ TREFHT: obs_var_name: "TREFHT" contour_levels_range: [220,320, 5] diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" TS: @@ -1321,8 +1311,6 @@ TS: contour_levels_range: [220,320, 5] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" mpl: colorbar: @@ -1339,8 +1327,6 @@ SST: contour_levels_range: [220,320, 5] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" mpl: colorbar: @@ -1405,8 +1391,6 @@ TMQ: contour_levels_range: [0, 75.0, 5.0] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] - scale_factor: 1. - add_offset: 0 new_unit: "kg m$^{-2}$" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1420,8 +1404,6 @@ RELHUM: contour_levels_range: [0, 105, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Fraction" mpl: colorbar: @@ -1438,8 +1420,6 @@ U: contour_levels_range: [-10, 90, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "ms$^{-1}$" mpl: colorbar: @@ -1458,8 +1438,6 @@ V: contour_levels_range: [-10, 90, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "ms$^{-1}$" mpl: colorbar: @@ -1549,8 +1527,6 @@ RESTOM: contour_levels_range: [-100, 100, 5] diff_colormap: "seismic" diff_contour_range: [-10, 10, 0.5] - scale_factor: 1 - add_offset: 0 new_unit: "W m$^{-2}$" mpl: colorbar: @@ -1566,8 +1542,6 @@ SWCF: contour_levels_range: [-150, 50, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1575,8 +1549,6 @@ SWCF: obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES_EBAF_Ed4.1" obs_var_name: "toa_cre_sw_mon" - obs_scale_factor: 1 - obs_add_offset: 0 category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1586,8 +1558,6 @@ LWCF: contour_levels_range: [-10, 100, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 1] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1604,8 +1574,6 @@ FSUTOA: contour_levels_range: [-10, 180, 15] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 1] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1619,8 +1587,6 @@ FSNT: contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1652,8 +1618,6 @@ FLNT: contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1670,8 +1634,6 @@ FLNTC: contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1702,8 +1664,6 @@ FSNS: contour_levels_range: [-10, 300, 20] diff_colormap: "BrBG" diff_contour_range: [-24, 24, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1720,8 +1680,6 @@ FSNSC: contour_levels_range: [-10, 300, 20] diff_colormap: "BrBG" diff_contour_range: [-24, 24, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1738,8 +1696,6 @@ FLDS: contour_levels_range: [100, 500, 25] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1771,8 +1727,6 @@ LHFLX: contour_levels_range: [0, 220, 10] diff_colormap: "BrBG" diff_contour_range: [-45, 45, 5] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -1898,8 +1852,6 @@ CLDTOT_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -1911,8 +1863,6 @@ CLDHGH_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -1924,8 +1874,6 @@ CLDMED_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -1937,8 +1885,6 @@ CLDLOW_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -1950,8 +1896,6 @@ CLD_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -1966,8 +1910,6 @@ CLD_CAL: H2O: colormap: "PuOr_r" diff_colormap: "BrBG" - scale_factor: 1 - add_offset: 0 new_unit: "mol mol$^{-1}$" mpl: colorbar: diff --git a/lib/adf_variable_defaults_era5-1deg.yaml b/lib/adf_variable_defaults_era5-1deg.yaml index b138e31e7..ada2e09e2 100644 --- a/lib/adf_variable_defaults_era5-1deg.yaml +++ b/lib/adf_variable_defaults_era5-1deg.yaml @@ -2010,8 +2010,6 @@ SWCF: obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES_EBAF_Ed4.1" obs_var_name: "toa_cre_sw_mon" - obs_scale_factor: 1 - obs_add_offset: 0 category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" diff --git a/lib/adf_variable_defaults_noresm.yaml b/lib/adf_variable_defaults_noresm.yaml index ae0f5cc11..2eab77cad 100644 --- a/lib/adf_variable_defaults_noresm.yaml +++ b/lib/adf_variable_defaults_noresm.yaml @@ -173,8 +173,8 @@ cb_BC: obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" obs_var_name: "BURDENBC" obs_name: "MERRA2" - obs_scale_factor: 1000000 - obs_add_offset: 0 + derivable_from_obs: ['BURDENBC'] + derivation_formula_obs: "BURDENBC * 1e6" cb_SULFATE: category: "Aerosols" @@ -190,8 +190,8 @@ cb_SULFATE: obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" obs_name: "CAMS" obs_var_name: "BURDENSO4" - obs_scale_factor: 1000000 - obs_add_offset: 0 + derivable_from_obs: ['BURDENSO4'] + derivation_formula_obs: "BURDENSO4 * 1e6" cb_isoprene: category: "Aerosols" @@ -242,8 +242,8 @@ cb_DUST: obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" obs_var_name: "BURDENDUST" obs_name: "CAMS" - obs_scale_factor: 1000000 - obs_add_offset: 0 + derivable_from_obs: ['BURDENDUST'] + derivation_formula_obs: "BURDENDUST * 1e6" cb_OM: category: "Aerosols" @@ -287,8 +287,8 @@ cb_SALT: obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" obs_var_name: "BURDENSEASALT" obs_name: "CAMS" - obs_scale_factor: 1000000 - obs_add_offset: 0 + derivable_from_obs: ['BURDENSEASALT'] + derivation_formula_obs: "BURDENSEASALT * 1e6" cb_SO2: category: "Aerosols" From 6b32a92320d939be2f675c945886a7077979baef Mon Sep 17 00:00:00 2001 From: mvertens Date: Wed, 22 Jul 2026 20:06:15 +0200 Subject: [PATCH 02/12] made yaml files more consistent - removed references to scale_factor=1 and scale_offset=0 --- lib/adf_variable_defaults_cesm.yaml | 6 - lib/adf_variable_defaults_era5-1deg.yaml | 490 +---------------------- 2 files changed, 1 insertion(+), 495 deletions(-) diff --git a/lib/adf_variable_defaults_cesm.yaml b/lib/adf_variable_defaults_cesm.yaml index aec6997c0..6a224011e 100644 --- a/lib/adf_variable_defaults_cesm.yaml +++ b/lib/adf_variable_defaults_cesm.yaml @@ -28,8 +28,6 @@ AODDUST: contour_levels_range: [0.01, 0.6, 0.05] diff_colormap: "PuOr_r" diff_contour_range: [-0.06, 0.06, 0.01] - scale_factor: 1 - add_offset: 0 new_unit: "" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -40,8 +38,6 @@ AODVIS: contour_levels_range: [0.05, 0.6, 0.05] diff_colormap: "PuOr_r" diff_contour_range: [-0.1, 0.1, 0.01] - scale_factor: 1 - add_offset: 0 new_unit: "" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -52,8 +48,6 @@ AODVISdn: contour_levels_range: [0.01, 1.01, 0.05] diff_colormap: "PuOr_r" diff_contour_range: [-0.4, 0.401, 0.05] - scale_factor: 1 - add_offset: 0 new_unit: "" obs_file: "MOD08_M3_192x288_AOD_2001-2020_climo.nc" obs_name: "MODIS" diff --git a/lib/adf_variable_defaults_era5-1deg.yaml b/lib/adf_variable_defaults_era5-1deg.yaml index ada2e09e2..cba3cf198 100644 --- a/lib/adf_variable_defaults_era5-1deg.yaml +++ b/lib/adf_variable_defaults_era5-1deg.yaml @@ -137,441 +137,6 @@ FCTI: FICE: category: "Microphysics" -#+++++++++++ -# Category: Aerosols -#+++++++++++ - -#List of zonal areosols -aerosol_zonal_list: ["BC","POM","SO4","SOA","NH4HSO4","DUST","SeaSalt"] - -AODDUST: - category: "Aerosols" - colormap: "Oranges" - contour_levels_range: [0.01, 0.6, 0.05] - diff_colormap: "PuOr_r" - diff_contour_range: [-0.06, 0.06, 0.01] - scale_factor: 1 - add_offset: 0 - new_unit: "" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -AODVIS: - category: "Aerosols" - colormap: "Oranges" - contour_levels_range: [0.05, 0.6, 0.05] - diff_colormap: "PuOr_r" - diff_contour_range: [-0.1, 0.1, 0.01] - scale_factor: 1 - add_offset: 0 - new_unit: "" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -AODVISdn: - category: "Aerosols" - colormap: "jet" - contour_levels_range: [0.01, 1.01, 0.05] - diff_colormap: "PuOr_r" - diff_contour_range: [-0.4, 0.401, 0.05] - scale_factor: 1 - add_offset: 0 - new_unit: "" - obs_file: "MOD08_M3_192x288_AOD_2001-2020_climo.nc" - obs_name: "MODIS" - obs_var_name: "AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -BURDENBC: - category: "Aerosols" - colormap: "plasma_r" - scale_factor: 1000000 - add_offset: 0 - new_unit: 'g m$^{-2}$' - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - diff_colormap: "RdBu_r" - obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" - obs_var_name: "BURDENBC" - obs_name: "MERRA2" - obs_scale_factor: 1000000 - obs_add_offset: 0 - -BURDENDUST: - category: "Aerosols" - colormap: "plasma_r" - scale_factor: 1000000 - add_offset: 0 - new_unit: 'g m$^{-2}$' - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - diff_contour_range: [-1000, 1100, 100] - diff_colormap: "RdBu_r" - obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_var_name: "BURDENDUST" - obs_name: "CAMS" - obs_scale_factor: 1000000 - obs_add_offset: 0 - -BURDENPOM: - category: "Aerosols" - colormap: "plasma_r" - scale_factor: 1000000 - add_offset: 0 - new_unit: 'g m$^{-2}$' - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - diff_colormap: "RdBu_r" - - -BURDENSEASALT: - category: "Aerosols" - colormap: "plasma_r" - scale_factor: 1000000 - add_offset: 0 - new_unit: 'g m$^{-2}$' - diff_contour_range: [-200, 200, 25] - diff_colormap: "RdBu_r" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_var_name: "BURDENSEASALT" - obs_name: "CAMS" - obs_scale_factor: 1000000 - obs_add_offset: 0 - -BURDENSO4: - category: "Aerosols" - colormap: "plasma_r" - scale_factor: 1000000 - add_offset: 0 - new_unit: 'g m$^{-2}$' - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - diff_colormap: "RdBu_r" - obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_name: "CAMS" - obs_var_name: "BURDENSO4" - obs_scale_factor: 1000000 - obs_add_offset: 0 - -BURDENSOA: - category: "Aerosols" - colormap: "plasma_r" - scale_factor: 1000000 - add_offset: 0 - new_unit: 'g m$^{-2}$' - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - diff_colormap: "RdBu_r" - -DMS: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" - -SO2: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" - -SOAG: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" - -BC: - colormap: "RdBu_r" - diff_colormap: "BrBG" - scale_factor: 1000000000 - add_offset: 0 - new_unit: '$\mu$g/m3' - mpl: - colorbar: - label : '$\mu$g/m3' - category: "Aerosols" - derivable_from: ["bc_a1", "bc_a4"] - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -POM: - colormap: "RdBu_r" - diff_colormap: "BrBG" - scale_factor: 1000000000 - add_offset: 0 - new_unit: '$\mu$g/m3' - mpl: - colorbar: - label : '$\mu$g/m3' - category: "Aerosols" - derivable_from: ["pom_a1", "pom_a4"] - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SO4: - colormap: "RdBu_r" - diff_colormap: "BrBG" - scale_factor: 1000000000 - add_offset: 0 - new_unit: '$\mu$g/m3' - mpl: - colorbar: - label : '$\mu$g/m3' - category: "Aerosols" - derivable_from: ["so4_a1", "so4_a2", "so4_a3"] - derivable_from_cam_chem: ["so4_a1", "so4_a2", "so4_a3", "so4_a5"] - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SOA: - colormap: "RdBu_r" - diff_colormap: "BrBG" - scale_factor: 1000000000 - add_offset: 0 - new_unit: '$\mu$g/m3' - mpl: - colorbar: - label : '$\mu$g/m3' - category: "Aerosols" - derivable_from: ["soa_a1", "soa_a2"] - derivable_from_cam_chem: ["soa1_a1", "soa2_a1", "soa3_a1", "soa4_a1", "soa5_a1", "soa1_a2", "soa2_a2", "soa3_a2", "soa4_a2", "soa5_a2"] - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -DUST: - colormap: "RdBu_r" - contour_levels: [0,0.1,0.25,0.4,0.6,0.8,1.4,2,3,4,8,12,30,48,114,180] - non_linear: True - diff_colormap: "BrBG" - scale_factor: 1000000000 - add_offset: 0 - new_unit: '$\mu$g/m3' - mpl: - colorbar: - label : '$\mu$g/m3' - category: "Aerosols" - derivable_from: ["dst_a1", "dst_a2", "dst_a3"] - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SeaSalt: - colormap: "RdBu_r" - contour_levels: [0,0.05,0.075,0.2,0.3,0.4,0.7,1,1.5,2,4,6,15,24,57,90] - non_linear: True - diff_colormap: "BrBG" - scale_factor: 1000000000 - add_offset: 0 - new_unit: '$\mu$g/m3' - mpl: - colorbar: - label : '$\mu$g/m3' - ticks: [0.05,0.2,0.4,1,2,6,24,90] - diff_colorbar: - label : '$\mu$g/m3' - ticks: [-10,8,6,4,2,0,-2,-4,-6,-8,-10] - category: "Aerosols" - derivable_from: ["ncl_a1", "ncl_a2", "ncl_a3"] - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -bc_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -bc_a4: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -dst_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -dst_a2: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -dst_a3: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -ncl_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -ncl_a2: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -ncl_a3: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -num_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -num_a2: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -num_a3: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -num_a4: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -num_a5: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -pom_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -pom_a4: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -so4_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -so4_a2: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -so4_a3: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -soa_a1: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -soa_a2: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0e-9 - new_unit: "ug/kg" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -SAD_TROP: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0 - new_unit: "cm2/cm3" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -SAD_AERO: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0 - new_unit: "cm2/cm3" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" -SAD_SULFC: - category: "Aerosols" - colormap: "jet" - diff_colormap: "gist_ncar" - scale_factor: 1.0 - new_unit: "cm2/cm3" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - #+++++++++++++++++ # Category: Budget #+++++++++++++++++ @@ -1476,8 +1041,6 @@ CLDTOT: contour_levels_range: [0.2, 1.1, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1491,8 +1054,6 @@ CLDLOW: contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1506,8 +1067,6 @@ CLDHGH: contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1521,8 +1080,6 @@ CLDMED: contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] - scale_factor: 1. - add_offset: 0 new_unit: "Fraction" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1751,8 +1308,6 @@ TS: contour_levels_range: [220,320, 5] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" mpl: colorbar: @@ -1769,8 +1324,6 @@ SST: contour_levels_range: [220,320, 5] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" mpl: colorbar: @@ -1841,8 +1394,6 @@ TMQ: contour_levels_range: [0, 75.0, 5.0] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] - scale_factor: 1. - add_offset: 0 new_unit: "kg m$^{-2}$" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" @@ -1856,8 +1407,6 @@ RELHUM: contour_levels_range: [0, 105, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Fraction" mpl: colorbar: @@ -1874,8 +1423,6 @@ U: contour_levels_range: [-10, 90, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "ms$^{-1}$" mpl: colorbar: @@ -1894,8 +1441,6 @@ V: contour_levels_range: [-10, 90, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "ms$^{-1}$" mpl: colorbar: @@ -1985,14 +1530,13 @@ RESTOM: contour_levels_range: [-100, 100, 5] diff_colormap: "seismic" diff_contour_range: [-10, 10, 0.5] - scale_factor: 1 - add_offset: 0 new_unit: "W m$^{-2}$" mpl: colorbar: label : "W m$^{-2}$" category: "TOA energy flux" derivable_from: ['FLNT','FSNT'] + derivation_formula: "FSNT - FLNT" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -2001,8 +1545,6 @@ SWCF: contour_levels_range: [-150, 50, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2019,8 +1561,6 @@ LWCF: contour_levels_range: [-10, 100, 5] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 1] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2037,8 +1577,6 @@ FSUTOA: contour_levels_range: [-10, 180, 15] diff_colormap: "BrBG" diff_contour_range: [-15, 15, 1] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2052,8 +1590,6 @@ FSNT: contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2085,8 +1621,6 @@ FLNT: contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2103,8 +1637,6 @@ FLNTC: contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2135,8 +1667,6 @@ FSNS: contour_levels_range: [-10, 300, 20] diff_colormap: "BrBG" diff_contour_range: [-24, 24, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2153,8 +1683,6 @@ FSNSC: contour_levels_range: [-10, 300, 20] diff_colormap: "BrBG" diff_contour_range: [-24, 24, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2171,8 +1699,6 @@ FLDS: contour_levels_range: [100, 500, 25] diff_colormap: "BrBG" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2204,8 +1730,6 @@ LHFLX: contour_levels_range: [0, 220, 10] diff_colormap: "BrBG" diff_contour_range: [-45, 45, 5] - scale_factor: 1 - add_offset: 0 new_unit: "Wm$^{-2}$" mpl: colorbar: @@ -2331,8 +1855,6 @@ CLDTOT_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -2344,8 +1866,6 @@ CLDHGH_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -2357,8 +1877,6 @@ CLDMED_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -2370,8 +1888,6 @@ CLDLOW_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -2383,8 +1899,6 @@ CLD_CAL: contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] - scale_factor: 1. - add_offset: 0 new_unit: "Percent" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_name: "CALIPSO" @@ -2399,8 +1913,6 @@ CLD_CAL: H2O: colormap: "PuOr_r" diff_colormap: "BrBG" - scale_factor: 1 - add_offset: 0 new_unit: "mol mol$^{-1}$" mpl: colorbar: From 45de46de67e474efea053d33441d4914ce33eaf3 Mon Sep 17 00:00:00 2001 From: mvertens Date: Thu, 23 Jul 2026 15:32:37 +0200 Subject: [PATCH 03/12] new updates for ALBEDO and ALBEDOC among other updates for consistency with new obs formulas --- lib/adf_variable_defaults.yaml | 92 ++++++++++++++++-------- lib/adf_variable_defaults_era5-1deg.yaml | 15 ++-- 2 files changed, 66 insertions(+), 41 deletions(-) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index 10cb6d3a2..595ffa666 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -1,4 +1,3 @@ - #This file lists out variable-specific defaults #for plotting and observations. These defaults #are: @@ -56,6 +55,10 @@ # derivation_formula -> If derivable_from is specified then an accompanying derivation_fromula must # also be specified # +# derivable_from_obs -> If not present in the available output files, the variable can be derived from +# other observational variables that are present +# derivation_formula_obs -> If derivable_from is specified then an accompanying derivation_fromula_obs must +# also be specified # # Final Note: Please do not modify this file unless you plan to push your changes back to the ADF repo. # If you would like to modify this file for your personal ADF runs then it is recommended @@ -1093,7 +1096,6 @@ CLOUD: diff_colormap: "BrBG" diff_contour_range: [-15, 15, 2] scale_factor: 100 - add_offset: 0 new_unit: "Percent" mpl: colorbar: @@ -1110,8 +1112,6 @@ TGCLDLWP: contour_levels_range: [0, 400, 10] diff_colormap: "BrBG" diff_contour_range: [-100, 100, 10] - scale_factor: 1000 - add_offset: 0 new_unit: "g m$^{-2}$" mpl: colorbar: @@ -1119,9 +1119,8 @@ TGCLDLWP: category: "Clouds" obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" obs_name: "ERA5" - obs_var_name: "TGCLDLWP" derivable_from_obs: ['TGCLDWP'] - derivation_formula_obs: "TGCLDWP * 1e3" + derivation_formula_obs: "TGCLDWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1130,8 +1129,6 @@ TGCLDIWP: contour_levels_range: [0, 100, 5] diff_colormap: "BrBG" diff_contour_range: [-50, 50, 5] - scale_factor: 1000 - add_offset: 0 new_unit: "g m$^{-2}$" mpl: colorbar: @@ -1139,9 +1136,8 @@ TGCLDIWP: category: "Clouds" obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" obs_name: "ERA5" - obs_var_name: "TGCLDIWP" derivable_from_obs: ['TGCLDIWP'] - derivation_formula_obs: "TGCLDIWP * 1e3" + derivation_formula_obs: "TGCLDIWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1169,72 +1165,71 @@ WPTHLP_CLUBB: #+++++++++++++++++ PRECC: + category: "Hydrologic cycle" colormap: "Greens" contour_levels_range: [0, 20, 1] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 new_unit: "mm d$^{-1}$" mpl: colorbar: label : "mm/d" - category: "Hydrologic cycle" + derivable_from: ['PRECC'] + derivation_formula: "PRECC * 86400000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" PRECL: + category: "Hydrologic cycle" colormap: "Greens" contour_levels_range: [0, 20, 1] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 new_unit: "mm d$^{-1}$" mpl: colorbar: label : "mm d$^{-1}$" - category: "Hydrologic cycle" + derivable_from: ['PRECL'] + derivation_formula: "PRECL * 86400000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" PRECSC: + category: "Hydrologic cycle" colormap: "Greens" contour_levels_range: [0, 20, 1] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 new_unit: "mm d$^{-1}$" mpl: colorbar: label : "mm d$^{-1}$" - category: "Hydrologic cycle" + derivable_from: ['PRECSC'] + derivation_formula: "PRECSC * 86400000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" PRECSL: + category: "Hydrologic cycle" colormap: "Greens" contour_levels_range: [0, 20, 1] diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 new_unit: "mm d$^{-1}$" mpl: colorbar: label : "mm d$^{-1}$" - category: "Hydrologic cycle" + derivable_from: ['PRECSL'] + derivation_formula: "PRECSL * 86400000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" PRECT: + category: "Hydrologic cycle" colormap: "Blues" contour_levels_range: [0, 20, 1] diff_colormap: "seismic" diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 new_unit: "mm d$^{-1}$" mpl: colorbar: @@ -1242,9 +1237,10 @@ PRECT: obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" obs_var_name: "PRECT" - category: "Hydrologic cycle" + derivable_from_obs: ['TGCLDWP'] + derivation_formula_obs: "TGCLDWP * 1000" derivable_from: ['PRECL','PRECC'] - derivation_formula: "PRECC + PRECL" + derivation_formula: "(PRECC + PRECL) * 86400000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1267,7 +1263,6 @@ PSL: diff_colormap: "PuOr_r" diff_contour_range: [-9, 9, 0.5] scale_factor: 0.01 - add_offset: 0 new_unit: "hPa" mpl: colorbar: @@ -1285,7 +1280,6 @@ PS: diff_colormap: "PuOr_r" diff_contour_range: [-9, 9, 0.5] scale_factor: 0.01 - add_offset: 0 new_unit: "hPa" mpl: colorbar: @@ -1354,16 +1348,17 @@ TAUX: vector_name: "Surface_Wind_Stress" category: "Surface variables" scale_factor: -1 - add_offset: 0 pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" + obs_file: "TAUX_ERA5_monthly_climo_1degree_197901-202212.nc" + obs_name: "ERA5" + obs_var_name: "TAUX" TAUY: vector_pair: "TAUX" vector_name: "Surface_Wind_Stress" category: "Surface variables" scale_factor: -1 - add_offset: 0 pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1382,6 +1377,42 @@ LANDFRAC: pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" +ALBEDO: + colormap: "Blues" + contour_levels_range: [0, 1, .1] + diff_colormap: "BrBG" + diff_contour_range: [-0.5, 0.5, .05] + new_unit: "dimensionless" + derivable_from: ['SOLIN','FSNTOA'] + derivation_formula: "(SOLIN-FSNTOA)/SOLIN" + mpl: + colorbar: + label : "dimensionless" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_name: "CERES-EBAF" + obs_var_name: "ALBEDO" + derivable_from_obs:['solar_mon','fsnt'] + derivation_formula_obs: "(solar_mon-fsnt)/solar_mon" + category: "TOA energy flux" + +ALBEDOC: + colormap: "Blues" + contour_levels_range: [0, 1, .05] + diff_colormap: "BrBG" + diff_contour_range: [-0.3, 0.3, .05] + new_unit: "dimensionless" + derivable_from: ['SOLIN','FSNTOAC'] + derivation_formula: "(SOLIN-FSNTOAC)/SOLIN" + mpl: + colorbar: + label : "dimensionless" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_name: "CERES_EBAF" + obs_var_name: "ALBEDOC" + derivable_from_obs:['solar_mon','total_sw_clr_c_mon'] + derivation_formula_obs: "total_sw_clr_c_mon/solar_mon" + category: "TOA energy flux" + #+++++++++++++++++ # Category: State #+++++++++++++++++ @@ -1480,7 +1511,6 @@ OMEGA500: pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" scale_factor: 864 - add_offset: 0 new_unit: "hPa d$^{-1}$" hist_bins: [-105, -100, -95, -90, -85, -80, -75, -70, -65, -60, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] diff --git a/lib/adf_variable_defaults_era5-1deg.yaml b/lib/adf_variable_defaults_era5-1deg.yaml index cba3cf198..9cd8dbdf0 100644 --- a/lib/adf_variable_defaults_era5-1deg.yaml +++ b/lib/adf_variable_defaults_era5-1deg.yaml @@ -1111,8 +1111,6 @@ TGCLDLWP: contour_levels_range: [0, 400, 10] diff_colormap: "BrBG" diff_contour_range: [-100, 100, 10] - scale_factor: 1000 - add_offset: 0 new_unit: "g m$^{-2}$" mpl: colorbar: @@ -1120,9 +1118,8 @@ TGCLDLWP: category: "Clouds" obs_file: "TGCLDLWP_ERA5_monthly_climo_1degree_197901-202112.nc" obs_name: "ERA5" - obs_var_name: "TGCLDLWP" - obs_scale_factor: 1000 - obs_add_offset: 0 + derivable_from_obs: ['TGCLDWP'] + derivation_formula_obs: "TGCLDWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1131,8 +1128,6 @@ TGCLDIWP: contour_levels_range: [0, 100, 5] diff_colormap: "BrBG" diff_contour_range: [-50, 50, 5] - scale_factor: 1000 - add_offset: 0 new_unit: "g m$^{-2}$" mpl: colorbar: @@ -1140,9 +1135,8 @@ TGCLDIWP: category: "Clouds" obs_file: "TGCLDIWP_ERA5_monthly_climo_1degree_197901-202112.nc" obs_name: "ERA5" - obs_var_name: "TGCLDIWP" - obs_scale_factor: 1000 - obs_add_offset: 0 + derivable_from_obs: ['TGCLDIWP'] + derivation_formula_obs: "TGCLDIWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1245,6 +1239,7 @@ PRECT: obs_var_name: "PRECT" category: "Hydrologic cycle" derivable_from: ['PRECL','PRECC'] + derivation_formula: "PRECC + PRECL" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" From 16ece87b56bb717a74d5c2d7159d0bab649720d0 Mon Sep 17 00:00:00 2001 From: mvertens Date: Thu, 23 Jul 2026 16:30:25 +0200 Subject: [PATCH 04/12] fixed yaml file --- lib/adf_variable_defaults.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index 595ffa666..d2a8b8f4b 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -1391,7 +1391,7 @@ ALBEDO: obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES-EBAF" obs_var_name: "ALBEDO" - derivable_from_obs:['solar_mon','fsnt'] + derivable_from_obs: ['solar_mon','fsnt'] derivation_formula_obs: "(solar_mon-fsnt)/solar_mon" category: "TOA energy flux" @@ -1409,7 +1409,7 @@ ALBEDOC: obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES_EBAF" obs_var_name: "ALBEDOC" - derivable_from_obs:['solar_mon','total_sw_clr_c_mon'] + derivable_from_obs: ['solar_mon','total_sw_clr_c_mon'] derivation_formula_obs: "total_sw_clr_c_mon/solar_mon" category: "TOA energy flux" From e9374741dc18ca3834c011244870f9a2bfd1bde4 Mon Sep 17 00:00:00 2001 From: mvertens Date: Thu, 23 Jul 2026 18:29:32 +0200 Subject: [PATCH 05/12] fixed problem with not specifying an obs_var_name if there was an observation derivation formula --- lib/plotting_functions.py | 35 +++++++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/lib/plotting_functions.py b/lib/plotting_functions.py index c54cfdc0f..c3abc7149 100644 --- a/lib/plotting_functions.py +++ b/lib/plotting_functions.py @@ -774,8 +774,11 @@ def make_polar_plot(wks, case_nickname, ax1.set_title(case_title, loc='left', fontsize=6) #fontsize=tiFontSize if obs: - obs_var = kwargs["obs_var_name"] - obs_title = kwargs["obs_file"][:-3] + # obs_var_name is optional (e.g. when the obs variable is defined by a + # derivation formula rather than a stored variable); default to blank. + obs_var = kwargs.get("obs_var_name", "") + _obs_file = kwargs.get("obs_file", "") + obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" ax2.set_title(base_title, loc='left', fontsize=6) #fontsize=tiFontSize else: @@ -1021,8 +1024,11 @@ def plot_map_vect_and_save(wks, case_nickname, base_nickname, ax[0].set_title(case_title, loc='left', fontsize=tiFontSize) if obs: - obs_var = kwargs["obs_var_name"] - obs_title = kwargs["obs_file"][:-3] + # obs_var_name is optional (e.g. when the obs variable is defined by a + # derivation formula rather than a stored variable); default to blank. + obs_var = kwargs.get("obs_var_name", "") + _obs_file = kwargs.get("obs_file", "") + obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" ax[1].set_title(base_title, loc='left', fontsize=tiFontSize) else: @@ -1268,8 +1274,11 @@ def plot_map_and_save(wks, case_nickname, base_nickname, ax[0].set_title(case_title, loc='left', fontsize=tiFontSize) if obs: - obs_var = kwargs["obs_var_name"] - obs_title = kwargs["obs_file"][:-3] + # obs_var_name is optional (e.g. when the obs variable is defined by a + # derivation formula rather than a stored variable); default to blank. + obs_var = kwargs.get("obs_var_name", "") + _obs_file = kwargs.get("obs_file", "") + obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" ax[1].set_title(base_title, loc='left', fontsize=tiFontSize) else: @@ -1466,8 +1475,11 @@ def plot_zonal_mean_and_save(wks, case_nickname, base_nickname, case_title = r"$\mathbf{Test}:$"+f"{case_nickname}\nyears: {case_climo_yrs[0]}-{case_climo_yrs[-1]}" if obs: - obs_var = kwargs["obs_var_name"] - obs_title = kwargs["obs_file"][:-3] + # obs_var_name is optional (e.g. when the obs variable is defined by a + # derivation formula rather than a stored variable); default to blank. + obs_var = kwargs.get("obs_var_name", "") + _obs_file = kwargs.get("obs_file", "") + obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" else: base_title = r"$\mathbf{Baseline}:$"+f"{base_nickname}\nyears: {baseline_climo_yrs[0]}-{baseline_climo_yrs[-1]}" @@ -1716,8 +1728,11 @@ def plot_meridional_mean_and_save(wks, case_nickname, base_nickname, case_title = r"$\mathbf{Test}:$"+f"{case_nickname}\nyears: {case_climo_yrs[0]}-{case_climo_yrs[-1]}" if obs: - obs_var = kwargs["obs_var_name"] - obs_title = kwargs["obs_file"][:-3] + # obs_var_name is optional (e.g. when the obs variable is defined by a + # derivation formula rather than a stored variable); default to blank. + obs_var = kwargs.get("obs_var_name", "") + _obs_file = kwargs.get("obs_file", "") + obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" else: base_title = r"$\mathbf{Baseline}:$"+f"{base_nickname}\nyears: {baseline_climo_yrs[0]}-{baseline_climo_yrs[-1]}" From ee3ab89b6616553f6612adb1baa001c191220bc9 Mon Sep 17 00:00:00 2001 From: mvertens Date: Fri, 24 Jul 2026 10:00:03 +0200 Subject: [PATCH 06/12] fixed output name for observational derived variables --- lib/adf_variable_defaults.yaml | 1 - lib/plotting_functions.py | 36 +++++++++++++++++------------ scripts/plotting/meridional_mean.py | 21 ++++++++++++++--- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index d2a8b8f4b..7e2a0e19d 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -1390,7 +1390,6 @@ ALBEDO: label : "dimensionless" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES-EBAF" - obs_var_name: "ALBEDO" derivable_from_obs: ['solar_mon','fsnt'] derivation_formula_obs: "(solar_mon-fsnt)/solar_mon" category: "TOA energy flux" diff --git a/lib/plotting_functions.py b/lib/plotting_functions.py index c3abc7149..4d3ab777a 100644 --- a/lib/plotting_functions.py +++ b/lib/plotting_functions.py @@ -774,9 +774,9 @@ def make_polar_plot(wks, case_nickname, ax1.set_title(case_title, loc='left', fontsize=6) #fontsize=tiFontSize if obs: - # obs_var_name is optional (e.g. when the obs variable is defined by a - # derivation formula rather than a stored variable); default to blank. - obs_var = kwargs.get("obs_var_name", "") + # obs_var_name is optional; fall back to the obs field's name (e.g. for a + # formula-derived obs field) so the title still names the variable. + obs_var = kwargs.get("obs_var_name") or getattr(d2, "name", "") or "" _obs_file = kwargs.get("obs_file", "") obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" @@ -1024,9 +1024,12 @@ def plot_map_vect_and_save(wks, case_nickname, base_nickname, ax[0].set_title(case_title, loc='left', fontsize=tiFontSize) if obs: - # obs_var_name is optional (e.g. when the obs variable is defined by a - # derivation formula rather than a stored variable); default to blank. - obs_var = kwargs.get("obs_var_name", "") + # obs_var_name is optional; when absent (e.g. a formula-derived obs field) + # fall back to the obs field's own name so the title still names the variable. + _ofld = locals().get("obsfld") + if _ofld is None: + _ofld = locals().get("uobsfld_nowrap") + obs_var = kwargs.get("obs_var_name") or getattr(_ofld, "name", "") or "" _obs_file = kwargs.get("obs_file", "") obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" @@ -1274,9 +1277,12 @@ def plot_map_and_save(wks, case_nickname, base_nickname, ax[0].set_title(case_title, loc='left', fontsize=tiFontSize) if obs: - # obs_var_name is optional (e.g. when the obs variable is defined by a - # derivation formula rather than a stored variable); default to blank. - obs_var = kwargs.get("obs_var_name", "") + # obs_var_name is optional; when absent (e.g. a formula-derived obs field) + # fall back to the obs field's own name so the title still names the variable. + _ofld = locals().get("obsfld") + if _ofld is None: + _ofld = locals().get("uobsfld_nowrap") + obs_var = kwargs.get("obs_var_name") or getattr(_ofld, "name", "") or "" _obs_file = kwargs.get("obs_file", "") obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" @@ -1475,9 +1481,9 @@ def plot_zonal_mean_and_save(wks, case_nickname, base_nickname, case_title = r"$\mathbf{Test}:$"+f"{case_nickname}\nyears: {case_climo_yrs[0]}-{case_climo_yrs[-1]}" if obs: - # obs_var_name is optional (e.g. when the obs variable is defined by a - # derivation formula rather than a stored variable); default to blank. - obs_var = kwargs.get("obs_var_name", "") + # obs_var_name is optional; fall back to the obs field's name (e.g. for a + # formula-derived obs field) so the title still names the variable. + obs_var = kwargs.get("obs_var_name") or getattr(bdata, "name", "") or "" _obs_file = kwargs.get("obs_file", "") obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" @@ -1728,9 +1734,9 @@ def plot_meridional_mean_and_save(wks, case_nickname, base_nickname, case_title = r"$\mathbf{Test}:$"+f"{case_nickname}\nyears: {case_climo_yrs[0]}-{case_climo_yrs[-1]}" if obs: - # obs_var_name is optional (e.g. when the obs variable is defined by a - # derivation formula rather than a stored variable); default to blank. - obs_var = kwargs.get("obs_var_name", "") + # obs_var_name is optional; fall back to the obs field's name (e.g. for a + # formula-derived obs field) so the title still names the variable. + obs_var = kwargs.get("obs_var_name") or getattr(bdata, "name", "") or "" _obs_file = kwargs.get("obs_file", "") obs_title = _obs_file[:-3] if _obs_file.endswith(".nc") else _obs_file base_title = r"$\mathbf{Baseline}:$"+obs_title+"\n"+r"$\mathbf{Variable}:$"+f"{obs_var}" diff --git a/scripts/plotting/meridional_mean.py b/scripts/plotting/meridional_mean.py index f4e058098..dd3e6857e 100644 --- a/scripts/plotting/meridional_mean.py +++ b/scripts/plotting/meridional_mean.py @@ -170,7 +170,21 @@ def meridional_mean(adfobj): continue #Extract variable of interest - odata = oclim_ds[data_var].squeeze() # squeeze in case of degenerate dimensions + if adfobj.compare_obs and data_var not in oclim_ds: + # Derived obs variable (e.g. ALBEDO from solar_mon/fsnt): the obs + # file stores the constituents, not the field itself, so build it + # from derivation_formula_obs. The formula already encodes any unit + # scaling, so obs_scale_factor/obs_add_offset are skipped below. + odata = adfobj.data.derive_obs_from_formula(oclim_ds, var) + if odata is None: + warnings.warn(f"obs variable {var} not found and not derivable, " + f"skipping meridional mean plot of {var}") + continue + odata = odata.squeeze() + derived_obs = True + else: + odata = oclim_ds[data_var].squeeze() # squeeze in case of degenerate dimensions + derived_obs = False mdata = mclim_ds[var].squeeze() # APPLY UNITS TRANSFORMATION IF SPECIFIED: @@ -184,8 +198,9 @@ def meridional_mean(adfobj): odata = odata * vres.get("scale_factor",1) + vres.get("add_offset", 0) # update units odata.attrs['units'] = vres.get("new_unit", odata.attrs.get('units', 'none')) - # Or for observations - else: + # Or for observations (skip scaling when the obs field was built by a + # formula, which already encodes any conversion) + elif not derived_obs: odata = odata * vres.get("obs_scale_factor",1) + vres.get("obs_add_offset", 0) # Note: we are going to assume that the specification ensures the conversion makes the units the same. # Doesn't make sense to add a different unit. From 01abc853f195dcaafcf6988c7412b62b0274a535 Mon Sep 17 00:00:00 2001 From: mvertens Date: Fri, 24 Jul 2026 11:47:13 +0200 Subject: [PATCH 07/12] fixed wrong obs for PRECT --- lib/adf_variable_defaults.yaml | 37 +++++++++++++++------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index 7e2a0e19d..67179fe3f 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -23,16 +23,23 @@ # Currently only accepts "ocean", which means the variable will be masked # everywhere that isn't open ocean. # +# derivable_from -> If not present in the available output files, the variable can be derived from +# other variables that are present (e.g. PRECT can be derived from PRECC and PRECL), +# derivation_formula -> If derivable_from is specified then an accompanying derivation_fromula must +# also be specified # # OBSERVATIONS: # -# obs_file -> Path to observations file. If only the file name is given, then the file is assumed to -# exist in the path specified by "obs_data_loc" in the config file. -# obs_name -> Name of the observational dataset (mostly used for plotting and generated file naming). -# If this isn't present then the obs_file name is used. -# obs_var_name -> Variable in the observations file to compare against. If this isn't present then the -# variable name is assumed to be the same as the model variable name. -# +# obs_file -> Path to observations file. If only the file name is given, then the file is assumed to +# exist in the path specified by "obs_data_loc" in the config file. +# obs_name -> Name of the observational dataset (mostly used for plotting and generated file naming). +# If this isn't present then the obs_file name is used. +# obs_var_name -> Variable in the observations file to compare against. If this isn't present then the +# variable name is assumed to be the same as the model variable name. +# derivable_from_obs -> If not present in the available output files, the variable can be derived from +# other observational variables that are present +# derivation_formula_obs -> If derivable_from is specified then an accompanying derivation_fromula_obs must +# also be specified # # VECTORS: # @@ -50,16 +57,6 @@ # # DERIVING: # -# derivable_from -> If not present in the available output files, the variable can be derived from -# other variables that are present (e.g. PRECT can be derived from PRECC and PRECL), -# derivation_formula -> If derivable_from is specified then an accompanying derivation_fromula must -# also be specified -# -# derivable_from_obs -> If not present in the available output files, the variable can be derived from -# other observational variables that are present -# derivation_formula_obs -> If derivable_from is specified then an accompanying derivation_fromula_obs must -# also be specified -# # Final Note: Please do not modify this file unless you plan to push your changes back to the ADF repo. # If you would like to modify this file for your personal ADF runs then it is recommended # to make a copy of this file, make modifications in that copy, and then point the ADF to @@ -1234,13 +1231,11 @@ PRECT: mpl: colorbar: label : "mm d$^{-1}$" + derivable_from: ['PRECL','PRECC'] + derivation_formula: "(PRECC + PRECL) * 86400000" obs_file: "ERAI_all_climo.nc" obs_name: "ERAI" obs_var_name: "PRECT" - derivable_from_obs: ['TGCLDWP'] - derivation_formula_obs: "TGCLDWP * 1000" - derivable_from: ['PRECL','PRECC'] - derivation_formula: "(PRECC + PRECL) * 86400000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" From cffa658b6c36969165361e655a8b1d7f92d3e17d Mon Sep 17 00:00:00 2001 From: mvertens Date: Fri, 24 Jul 2026 12:00:12 +0200 Subject: [PATCH 08/12] =?UTF-8?q?changed=20=20derivable=5Ffrom=5Fobs=20?= =?UTF-8?q?=E2=86=92=20obs=5Fderivable=5Ffrom=20and=20derivation=5Fformula?= =?UTF-8?q?=5Fobs=20=E2=86=92=20obs=5Fderivation=5Fformula?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/adf_dataset.py | 14 +++++++------- lib/adf_variable_defaults.yaml | 20 ++++++++++---------- lib/adf_variable_defaults_era5-1deg.yaml | 8 ++++---- lib/adf_variable_defaults_noresm.yaml | 16 ++++++++-------- scripts/plotting/meridional_mean.py | 2 +- 5 files changed, 30 insertions(+), 30 deletions(-) diff --git a/lib/adf_dataset.py b/lib/adf_dataset.py index 4958272e5..9f6595b6a 100644 --- a/lib/adf_dataset.py +++ b/lib/adf_dataset.py @@ -403,8 +403,8 @@ def derive_obs_from_formula(self, ds, variablename): It uses observation-specific variable-defaults attributes, deliberately independent of the model attributes because obs names/formula may differ: - derivable_from_obs - input variable names as they appear in the obs file - derivation_formula_obs - formula written in terms of those obs names + obs_derivable_from - input variable names as they appear in the obs file + obs_derivation_formula - formula written in terms of those obs names `variablename` is the ADF variable name (the variable_defaults key), so the lookup is independent of obs_var_name (which only names the stored obs field). @@ -413,8 +413,8 @@ def derive_obs_from_formula(self, ds, variablename): is provided or its inputs are not all present in the file. """ vres = self.adf.variable_defaults.get(variablename, {}) - constits = vres.get("derivable_from_obs") - formula = vres.get("derivation_formula_obs") + constits = vres.get("obs_derivable_from") + formula = vres.get("obs_derivation_formula") if not constits or not formula: return None if not all(c in ds.data_vars for c in constits): @@ -432,7 +432,7 @@ def load_da(self, fils, variablename, derive_obs=False, obs_var_name=None, **kwa variable is stored under in the obs file and is used only for the direct read (observations may store a field under a different name than ADF uses). - When derive_obs is True and a derivation_formula_obs is provided for the + When derive_obs is True and a obs_derivation_formula is provided for the variable, that formula fully defines the transform from the obs file (any combination of derivation from constituents and unit conversion), so it is applied and the obs_scale_factor/obs_add_offset step is skipped. If no @@ -448,7 +448,7 @@ def load_da(self, fils, variablename, derive_obs=False, obs_var_name=None, **kwa # (variablename) is always used for the derivation and defaults/units lookups. read_name = obs_var_name if obs_var_name else variablename - # Observations: prefer a derivation_formula_obs when present - it fully + # Observations: prefer a obs_derivation_formula when present - it fully # defines the transform (derivation and/or scaling), so scale/offset is skipped. da = None applied_obs_formula = False @@ -463,7 +463,7 @@ def load_da(self, fils, variablename, derive_obs=False, obs_var_name=None, **kwa da = ds[read_name].squeeze() elif derive_obs: warnings.warn(f"\t WARNING: obs variable {variablename} (file name " - f"'{read_name}') not found and no usable derivation_formula_obs " + f"'{read_name}') not found and no usable obs_derivation_formula " "was provided.") return None else: diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index 67179fe3f..d703a89f1 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -36,9 +36,9 @@ # If this isn't present then the obs_file name is used. # obs_var_name -> Variable in the observations file to compare against. If this isn't present then the # variable name is assumed to be the same as the model variable name. -# derivable_from_obs -> If not present in the available output files, the variable can be derived from +# obs_derivable_from -> If not present in the available output files, the variable can be derived from # other observational variables that are present -# derivation_formula_obs -> If derivable_from is specified then an accompanying derivation_fromula_obs must +# obs_derivation_formula -> If derivable_from is specified then an accompanying derivation_fromula_obs must # also be specified # # VECTORS: @@ -1116,8 +1116,8 @@ TGCLDLWP: category: "Clouds" obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" obs_name: "ERA5" - derivable_from_obs: ['TGCLDWP'] - derivation_formula_obs: "TGCLDWP * 1000" + obs_derivable_from: ['TGCLDWP'] + obs_derivation_formula: "TGCLDWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1133,8 +1133,8 @@ TGCLDIWP: category: "Clouds" obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" obs_name: "ERA5" - derivable_from_obs: ['TGCLDIWP'] - derivation_formula_obs: "TGCLDIWP * 1000" + obs_derivable_from: ['TGCLDIWP'] + obs_derivation_formula: "TGCLDIWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1385,8 +1385,8 @@ ALBEDO: label : "dimensionless" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES-EBAF" - derivable_from_obs: ['solar_mon','fsnt'] - derivation_formula_obs: "(solar_mon-fsnt)/solar_mon" + obs_derivable_from: ['solar_mon','fsnt'] + obs_derivation_formula: "(solar_mon-fsnt)/solar_mon" category: "TOA energy flux" ALBEDOC: @@ -1403,8 +1403,8 @@ ALBEDOC: obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_name: "CERES_EBAF" obs_var_name: "ALBEDOC" - derivable_from_obs: ['solar_mon','total_sw_clr_c_mon'] - derivation_formula_obs: "total_sw_clr_c_mon/solar_mon" + obs_derivable_from: ['solar_mon','total_sw_clr_c_mon'] + obs_derivation_formula: "total_sw_clr_c_mon/solar_mon" category: "TOA energy flux" #+++++++++++++++++ diff --git a/lib/adf_variable_defaults_era5-1deg.yaml b/lib/adf_variable_defaults_era5-1deg.yaml index 9cd8dbdf0..39f6917f4 100644 --- a/lib/adf_variable_defaults_era5-1deg.yaml +++ b/lib/adf_variable_defaults_era5-1deg.yaml @@ -1118,8 +1118,8 @@ TGCLDLWP: category: "Clouds" obs_file: "TGCLDLWP_ERA5_monthly_climo_1degree_197901-202112.nc" obs_name: "ERA5" - derivable_from_obs: ['TGCLDWP'] - derivation_formula_obs: "TGCLDWP * 1000" + obs_derivable_from: ['TGCLDWP'] + obs_derivation_formula: "TGCLDWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1135,8 +1135,8 @@ TGCLDIWP: category: "Clouds" obs_file: "TGCLDIWP_ERA5_monthly_climo_1degree_197901-202112.nc" obs_name: "ERA5" - derivable_from_obs: ['TGCLDIWP'] - derivation_formula_obs: "TGCLDIWP * 1000" + obs_derivable_from: ['TGCLDIWP'] + obs_derivation_formula: "TGCLDIWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" diff --git a/lib/adf_variable_defaults_noresm.yaml b/lib/adf_variable_defaults_noresm.yaml index 2eab77cad..4c625a065 100644 --- a/lib/adf_variable_defaults_noresm.yaml +++ b/lib/adf_variable_defaults_noresm.yaml @@ -173,8 +173,8 @@ cb_BC: obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" obs_var_name: "BURDENBC" obs_name: "MERRA2" - derivable_from_obs: ['BURDENBC'] - derivation_formula_obs: "BURDENBC * 1e6" + obs_derivable_from: ['BURDENBC'] + obs_derivation_formula: "BURDENBC * 1e6" cb_SULFATE: category: "Aerosols" @@ -190,8 +190,8 @@ cb_SULFATE: obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" obs_name: "CAMS" obs_var_name: "BURDENSO4" - derivable_from_obs: ['BURDENSO4'] - derivation_formula_obs: "BURDENSO4 * 1e6" + obs_derivable_from: ['BURDENSO4'] + obs_derivation_formula: "BURDENSO4 * 1e6" cb_isoprene: category: "Aerosols" @@ -242,8 +242,8 @@ cb_DUST: obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" obs_var_name: "BURDENDUST" obs_name: "CAMS" - derivable_from_obs: ['BURDENDUST'] - derivation_formula_obs: "BURDENDUST * 1e6" + obs_derivable_from: ['BURDENDUST'] + obs_derivation_formula: "BURDENDUST * 1e6" cb_OM: category: "Aerosols" @@ -287,8 +287,8 @@ cb_SALT: obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" obs_var_name: "BURDENSEASALT" obs_name: "CAMS" - derivable_from_obs: ['BURDENSEASALT'] - derivation_formula_obs: "BURDENSEASALT * 1e6" + obs_derivable_from: ['BURDENSEASALT'] + obs_derivation_formula: "BURDENSEASALT * 1e6" cb_SO2: category: "Aerosols" diff --git a/scripts/plotting/meridional_mean.py b/scripts/plotting/meridional_mean.py index dd3e6857e..eb26f6c21 100644 --- a/scripts/plotting/meridional_mean.py +++ b/scripts/plotting/meridional_mean.py @@ -173,7 +173,7 @@ def meridional_mean(adfobj): if adfobj.compare_obs and data_var not in oclim_ds: # Derived obs variable (e.g. ALBEDO from solar_mon/fsnt): the obs # file stores the constituents, not the field itself, so build it - # from derivation_formula_obs. The formula already encodes any unit + # from obs_derivation_formula. The formula already encodes any unit # scaling, so obs_scale_factor/obs_add_offset are skipped below. odata = adfobj.data.derive_obs_from_formula(oclim_ds, var) if odata is None: From 00b9dd35e84125833506f3b956e361e44d440e25 Mon Sep 17 00:00:00 2001 From: mvertens Date: Fri, 24 Jul 2026 14:54:06 +0200 Subject: [PATCH 09/12] new observational format for yaml files --- lib/adf_dataset.py | 23 +- lib/adf_obs.py | 144 +- lib/adf_variable_defaults.yaml | 360 ++-- lib/adf_variable_defaults_cesm.yaml | 51 +- lib/adf_variable_defaults_era5-1deg.yaml | 2100 ---------------------- lib/adf_variable_defaults_noresm.yaml | 44 +- 6 files changed, 353 insertions(+), 2369 deletions(-) delete mode 100644 lib/adf_variable_defaults_era5-1deg.yaml diff --git a/lib/adf_dataset.py b/lib/adf_dataset.py index 9f6595b6a..6ac659ba5 100644 --- a/lib/adf_dataset.py +++ b/lib/adf_dataset.py @@ -69,6 +69,10 @@ def set_reference(self): """Set attributes for reference (aka baseline) data location, names, and variables.""" if self.adf.compare_obs: obs = self.adf.var_obs_dict + # ref_obs keeps the full per-variable obs info (file/name/var plus the + # selected dataset's scale/offset and derivation) so the converters and + # the obs derivation read from the chosen obs dataset. + self.ref_obs = obs self.ref_var_loc = {v: obs[v]['obs_file'] for v in obs} self.ref_labels = {v: obs[v]['obs_name'] for v in obs} self.ref_var_nam = {v: obs[v]['obs_var'] for v in obs} @@ -77,6 +81,7 @@ def set_reference(self): warnings.warn("\t WARNING: reference is observations, but no " "observations found to plot against.") else: + self.ref_obs = {} self.ref_var_loc = {} self.ref_var_nam = {} self.ref_labels = {} @@ -412,9 +417,15 @@ def derive_obs_from_formula(self, ds, variablename): Returns a DataArray (named `variablename`) or None if no usable obs formula is provided or its inputs are not all present in the file. """ - vres = self.adf.variable_defaults.get(variablename, {}) - constits = vres.get("obs_derivable_from") - formula = vres.get("obs_derivation_formula") + # Prefer the selected obs dataset's derivation; fall back to the + # variable-level attributes. + obs_info = getattr(self, "ref_obs", {}).get(variablename, {}) + constits = obs_info.get("obs_derivable_from") + formula = obs_info.get("obs_derivation_formula") + if not constits or not formula: + vres = self.adf.variable_defaults.get(variablename, {}) + constits = vres.get("obs_derivable_from") + formula = vres.get("obs_derivation_formula") if not constits or not formula: return None if not all(c in ds.data_vars for c in constits): @@ -501,8 +512,10 @@ def get_value_converters(self, case, variablename): vres = res[variablename] if variablename in self.ref_labels: if (case == self.ref_labels[variablename]) and (self.adf.compare_obs): - scale_factor = vres.get("obs_scale_factor",1) - add_offset = vres.get("obs_add_offset", 0) + # obs scale/offset come from the selected obs dataset + obs_info = getattr(self, "ref_obs", {}).get(variablename, {}) + scale_factor = obs_info.get("obs_scale_factor", 1) + add_offset = obs_info.get("obs_add_offset", 0) else: scale_factor = vres.get("scale_factor",1) add_offset = vres.get("add_offset", 0) diff --git a/lib/adf_obs.py b/lib/adf_obs.py index a4159c85d..ead1c3f5e 100644 --- a/lib/adf_obs.py +++ b/lib/adf_obs.py @@ -132,78 +132,56 @@ def __init__(self, config_file, debug=False): #Extract the "obs_data_loc" default observational data location: obs_data_loc = self.get_basic_info("obs_data_loc") + #Optional run-level selection among multiple observational datasets: + #a variable may list several obs under 'obs_datasets', and 'obs_source' + #(in diag_basic_info) chooses which one to use by matching its 'obs_name'. + #Variables with a single obs are unaffected by this setting. + obs_source = self.get_basic_info("obs_source") + #Loop over variable list: for var in self.diag_var_list: - #Check if variable is in defaults dictionary: - if var in _variable_defaults: - #Extract variable sub-dictionary: - default_var_dict = _variable_defaults[var] - - #Check if an observations file is specified: - if "obs_file" in default_var_dict: - #Set found variable: - found = False - - #Extract path/filename: - obs_file_path = Path(default_var_dict["obs_file"]) - - #Check if file exists: - if not obs_file_path.is_file(): - #If not, then check if it is in "obs_data_loc" - if obs_data_loc: - obs_file_path = Path(obs_data_loc)/obs_file_path - - if obs_file_path.is_file(): - found = True - - else: - #File was found: - found = True - #End if - - #If found, then set observations dataset and variable names: - if found: - #Check if observations dataset name is specified: - if "obs_name" in default_var_dict: - obs_name = default_var_dict["obs_name"] - else: - #If not, then just use obs file name: - obs_name = obs_file_path.name - - #Check if observations variable name is specified: - if "obs_var_name" in default_var_dict: - #If so, then set obs_var_name variable: - obs_var_name = default_var_dict["obs_var_name"] - else: - #Assume observation variable name is the same ad model variable: - obs_var_name = var - #End if - - #Add variable to observations dictionary: - self.__var_obs_dict[var] = \ - {"obs_file" : obs_file_path, - "obs_name" : obs_name, - "obs_var" : obs_var_name} - - else: - #If not found, then print to log and skip variable: - msg = f'''Unable to find obs file '{default_var_dict["obs_file"]}' ''' - msg += f"for variable '{var}'." - self.debug_log(msg) - continue - #End if - - else: - #No observation file was specified, so print - #to log and skip variable: - self.debug_log(f"No observations file was listed for variable '{var}'.") - continue - else: - #Variable not in defaults file, so print to log and skip variable: + #Skip variables not in the defaults file: + if var not in _variable_defaults: msg = f"Variable '{var}' not found in variable defaults file: `{_defaults_file}`" self.debug_log(msg) + continue + #End if + default_var_dict = _variable_defaults[var] + + #Select which obs dataset to use for this variable (a single obs, or one + #chosen from an 'obs_datasets' list via obs_source): + obs_spec = self._select_obs_spec(var, default_var_dict, obs_source) + if obs_spec is None: + self.debug_log(f"No observations file was listed for variable '{var}'.") + continue + #End if + + #Locate the obs file (as given, or under obs_data_loc): + obs_file_path = Path(obs_spec["obs_file"]) + if not obs_file_path.is_file() and obs_data_loc: + obs_file_path = Path(obs_data_loc)/obs_file_path + if not obs_file_path.is_file(): + msg = f'''Unable to find obs file '{obs_spec["obs_file"]}' for variable '{var}'.''' + self.debug_log(msg) + continue #End if + + #obs_name defaults to the file name; obs_var defaults to the model variable: + obs_name = obs_spec.get("obs_name", obs_file_path.name) + obs_var_name = obs_spec.get("obs_var_name", var) + + #Add variable to observations dictionary. The per-obs unit conversion and + #derivation belong to the selected dataset, so carry them here; for a + #single (flat) obs these come from the variable-level attributes. + self.__var_obs_dict[var] = \ + {"obs_file" : obs_file_path, + "obs_name" : obs_name, + "obs_var" : obs_var_name, + "obs_scale_factor" : obs_spec.get("obs_scale_factor", 1), + "obs_add_offset" : obs_spec.get("obs_add_offset", 0), + "obs_derivable_from" : obs_spec.get("obs_derivable_from"), + "obs_derivation_formula" : obs_spec.get("obs_derivation_formula")} #End for (var) #If variable dictionary is still empty, then print warning to screen: @@ -220,6 +198,40 @@ def __init__(self, config_file, debug=False): ######### + def _select_obs_spec(self, var, default_var_dict, obs_source): + """Return the observational-dataset spec to use for a variable, or None. + + A variable may specify its observations either as a single dataset (the flat + obs_file/obs_name/obs_var_name form) or as a list of datasets under + 'obs_datasets'. When a list is present, the entry whose 'obs_name' matches + the run-level 'obs_source' is chosen; if none matches (or obs_source is not + set), the first listed entry is used. Returns None if the variable has no + observational dataset at all. + """ + if "obs_datasets" in default_var_dict: + datasets = default_var_dict["obs_datasets"] + if not datasets: + return None + if obs_source is not None: + for dset in datasets: + if dset.get("obs_name") == obs_source: + return dset + #End if + #End for + #Requested source not offered by this variable: fall back to the + #first listed dataset, and note the substitution in the debug log. + self.debug_log(f"obs_source '{obs_source}' not available for '{var}'; " + f"using '{datasets[0].get('obs_name')}' instead.") + #End if + return datasets[0] + #End if + if "obs_file" in default_var_dict: + return default_var_dict + #End if + return None + + ######### + # Create property needed to return "variable_defaults" variable to user: @property def variable_defaults(self): diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index d703a89f1..b778ff8f2 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -179,9 +179,10 @@ ZMDT: CAPE: category: "Deep Convection" - obs_file: "CAPE_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "CAPE" + obs_datasets: + - obs_name: "ERA5" + obs_file: "CAPE_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "CAPE" CMFMC_DP: category: "Deep Convection" @@ -1021,17 +1022,19 @@ XOOH: CLDICE: category: "Clouds" - obs_file: "CLDICE_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "CLDICE" + obs_datasets: + - obs_name: "ERA5" + obs_file: "CLDICE_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "CLDICE" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" CLDLIQ: category: "Clouds" - obs_file: "CLDLIQ_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "CLDLIQ" + obs_datasets: + - obs_name: "ERA5" + obs_file: "CLDLIQ_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "CLDLIQ" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1041,9 +1044,10 @@ CLDTOT: diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDTOT" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDTOT" category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1054,9 +1058,10 @@ CLDLOW: diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDLOW" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDLOW" category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1067,9 +1072,10 @@ CLDHGH: diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDHGH" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDHGH" category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1080,9 +1086,10 @@ CLDMED: diff_colormap: "BrBG" diff_contour_range: [-0.4, 0.4, 0.05] new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDMED" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDMED" category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1114,12 +1121,13 @@ TGCLDLWP: colorbar: label : "g m$^{-2}$" category: "Clouds" - obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_derivable_from: ['TGCLDWP'] - obs_derivation_formula: "TGCLDWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" + obs_derivable_from: ['TGCLDWP'] + obs_derivation_formula: "TGCLDWP * 1000" TGCLDIWP: colormap: "Blues" @@ -1131,10 +1139,11 @@ TGCLDIWP: colorbar: label : "g m$^{-2}$" category: "Clouds" - obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_derivable_from: ['TGCLDIWP'] - obs_derivation_formula: "TGCLDIWP * 1000" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" + obs_derivable_from: ['TGCLDIWP'] + obs_derivation_formula: "TGCLDIWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1233,9 +1242,10 @@ PRECT: label : "mm d$^{-1}$" derivable_from: ['PRECL','PRECC'] derivation_formula: "(PRECC + PRECL) * 86400000" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "PRECT" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "PRECT" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1248,9 +1258,10 @@ QFLX: PBLH: category: "Surface variables" - obs_file: "PBLH_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "PBLH" + obs_datasets: + - obs_name: "ERA5" + obs_file: "PBLH_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "PBLH" PSL: colormap: "Oranges" @@ -1263,9 +1274,10 @@ PSL: colorbar: label : "hPa" category: "Surface variables" - obs_file: "PSL_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "PSL" + obs_datasets: + - obs_name: "ERA5" + obs_file: "PSL_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "PSL" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1280,20 +1292,22 @@ PS: colorbar: label : "hPa" category: "Surface variables" - obs_file: "PS_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "PS" + obs_datasets: + - obs_name: "ERA5" + obs_file: "PS_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "PS" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" TREFHT: category: "Surface variables" - obs_file: "TREFHT_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "TREFHT" contour_levels_range: [220,320, 5] diff_contour_range: [-10, 10, 1] new_unit: "K" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TREFHT_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "TREFHT" TS: colormap: "Blues" @@ -1304,9 +1318,10 @@ TS: mpl: colorbar: label : "K" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "TS" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "TS" category: "Surface variables" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1320,9 +1335,10 @@ SST: mpl: colorbar: label : "K" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "TS" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "TS" category: "Surface variables" mask: "ocean" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] @@ -1345,9 +1361,10 @@ TAUX: scale_factor: -1 pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" - obs_file: "TAUX_ERA5_monthly_climo_1degree_197901-202212.nc" - obs_name: "ERA5" - obs_var_name: "TAUX" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TAUX_ERA5_monthly_climo_1degree_197901-202212.nc" + obs_var_name: "TAUX" TAUY: vector_pair: "TAUX" @@ -1383,10 +1400,11 @@ ALBEDO: mpl: colorbar: label : "dimensionless" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES-EBAF" - obs_derivable_from: ['solar_mon','fsnt'] - obs_derivation_formula: "(solar_mon-fsnt)/solar_mon" + obs_datasets: + - obs_name: "CERES-EBAF" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_derivable_from: ['solar_mon','fsnt'] + obs_derivation_formula: "(solar_mon-fsnt)/solar_mon" category: "TOA energy flux" ALBEDOC: @@ -1400,11 +1418,12 @@ ALBEDOC: mpl: colorbar: label : "dimensionless" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF" - obs_var_name: "ALBEDOC" - obs_derivable_from: ['solar_mon','total_sw_clr_c_mon'] - obs_derivation_formula: "total_sw_clr_c_mon/solar_mon" + obs_datasets: + - obs_name: "CERES_EBAF" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "ALBEDOC" + obs_derivable_from: ['solar_mon','total_sw_clr_c_mon'] + obs_derivation_formula: "total_sw_clr_c_mon/solar_mon" category: "TOA energy flux" #+++++++++++++++++ @@ -1417,9 +1436,10 @@ TMQ: diff_colormap: "BrBG" diff_contour_range: [-10, 10, 0.5] new_unit: "kg m$^{-2}$" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "PREH2O" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "PREH2O" category: "State" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1433,9 +1453,10 @@ RELHUM: mpl: colorbar: label : "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "RELHUM" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "RELHUM" category: "State" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1449,9 +1470,10 @@ U: mpl: colorbar: label : "ms$^{-1}$" - obs_file: "U_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "U" + obs_datasets: + - obs_name: "ERA5" + obs_file: "U_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "U" vector_pair: "V" vector_name: "Wind" category: "State" @@ -1467,9 +1489,10 @@ V: mpl: colorbar: label : "ms$^{-1}$" - obs_file: "V_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "V" + obs_datasets: + - obs_name: "ERA5" + obs_file: "V_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "V" vector_pair: "U" vector_name: "Wind" category: "State" @@ -1478,25 +1501,28 @@ V: Q: category: "State" - obs_file: "Q_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "Q" + obs_datasets: + - obs_name: "ERA5" + obs_file: "Q_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "Q" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" T: category: "State" - obs_file: "T_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "T" + obs_datasets: + - obs_name: "ERA5" + obs_file: "T_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "T" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" OMEGA: category: "State" - obs_file: "OMEGA_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "OMEGA" + obs_datasets: + - obs_name: "ERA5" + obs_file: "OMEGA_ERA5_monthly_climo_197901-202112.nc" + obs_var_name: "OMEGA" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1570,9 +1596,10 @@ SWCF: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_cre_sw_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "toa_cre_sw_mon" category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1586,9 +1613,10 @@ LWCF: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_cre_lw_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "toa_cre_lw_mon" category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1615,9 +1643,10 @@ FSNT: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "fsnt" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "fsnt" category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1646,9 +1675,10 @@ FLNT: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_lw_all_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "toa_lw_all_mon" category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1662,9 +1692,10 @@ FLNTC: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_lw_clr_t_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "toa_lw_clr_t_mon" category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1692,9 +1723,10 @@ FSNS: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "sfc_net_sw_all_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "sfc_net_sw_all_mon" category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1708,9 +1740,10 @@ FSNSC: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "sfc_net_sw_clr_t_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "sfc_net_sw_clr_t_mon" category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1724,9 +1757,10 @@ FLDS: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "sfc_lw_down_all_mon" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "sfc_lw_down_all_mon" category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1755,9 +1789,10 @@ LHFLX: mpl: colorbar: label : "Wm$^{-2}$" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "LHFLX" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "LHFLX" category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1877,9 +1912,10 @@ CLDTOT_CAL: diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDTOT_CAL" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLDTOT_CAL" category: "COSP" CLDHGH_CAL: @@ -1888,9 +1924,10 @@ CLDHGH_CAL: diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDHGH_CAL" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLDHGH_CAL" category: "COSP" CLDMED_CAL: @@ -1899,9 +1936,10 @@ CLDMED_CAL: diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDMED_CAL" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLDMED_CAL" category: "COSP" CLDLOW_CAL: @@ -1910,9 +1948,10 @@ CLDLOW_CAL: diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDLOW_CAL" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLDLOW_CAL" category: "COSP" CLD_CAL: @@ -1921,9 +1960,10 @@ CLD_CAL: diff_colormap: "RdBu_r" diff_contour_range: [-40, 40, 5] new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLD_CAL" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLD_CAL" category: "COSP" @@ -1957,81 +1997,91 @@ uzm: ylim: [1e3,1] units: m s-1 long_name: Zonal-Mean zonal wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "uzm" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "uzm" vzm: ylim: [1e3,1] units: m s-1 long_name: Zonal-Mean meridional wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "vzm" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "vzm" epfy: ylim: [1e2,1] units: m3 s−2 long_name: northward component of the Eliassen–Palm flux - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "epfy" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "epfy" epfz: ylim: [1e2,1] units: m3 s−2 long_name: upward component of the Eliassen–Palm flux - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "epfz" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "epfz" vtem: ylim: [1e2,1] units: m/s long_name: Transformed Eulerian mean northward wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "vtem" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "vtem" wtem: ylim: [1e2,1] units: m/s long_name: Transformed Eulerian mean upward wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "wtem" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "wtem" psitem: ylim: [1e2,1] units: m3 s−2 long_name: Transformed Eulerian mean mass stream function - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "psitem" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "psitem" utendepfd: ylim: [1e2,1] units: m3 s−2 long_name: tendency of eastward wind due to Eliassen-Palm flux divergence - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "utendepfd" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "utendepfd" utendvtem: ylim: [1e2,1] units: m3 s−2 long_name: tendency of eastward wind due to TEM northward wind advection and the coriolis term - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "utendvtem" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "utendvtem" utendwtem: ylim: [1e2,1] units: m3 s−2 long_name: tendency of eastward wind due to TEM upward wind advection - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "utendwtem" + obs_datasets: + - obs_name: "ERA5" + obs_file: "TEM_ERA5.nc" + obs_var_name: "utendwtem" ####### diff --git a/lib/adf_variable_defaults_cesm.yaml b/lib/adf_variable_defaults_cesm.yaml index 6a224011e..960e9b11b 100644 --- a/lib/adf_variable_defaults_cesm.yaml +++ b/lib/adf_variable_defaults_cesm.yaml @@ -49,9 +49,10 @@ AODVISdn: diff_colormap: "PuOr_r" diff_contour_range: [-0.4, 0.401, 0.05] new_unit: "" - obs_file: "MOD08_M3_192x288_AOD_2001-2020_climo.nc" - obs_name: "MODIS" - obs_var_name: "AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean" + obs_datasets: + - obs_name: "MODIS" + obs_file: "MOD08_M3_192x288_AOD_2001-2020_climo.nc" + obs_var_name: "AOD_550_Dark_Target_Deep_Blue_Combined_Mean_Mean" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -64,11 +65,12 @@ BURDENBC: pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" diff_colormap: "RdBu_r" - obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" - obs_var_name: "BURDENBC" - obs_name: "MERRA2" - obs_scale_factor: 1000000 - obs_add_offset: 0 + obs_datasets: + - obs_name: "MERRA2" + obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" + obs_var_name: "BURDENBC" + obs_scale_factor: 1000000 + obs_add_offset: 0 BURDENDUST: category: "Aerosols" @@ -80,11 +82,12 @@ BURDENDUST: pct_diff_colormap: "PuOr_r" diff_contour_range: [-1000, 1100, 100] diff_colormap: "RdBu_r" - obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_var_name: "BURDENDUST" - obs_name: "CAMS" - obs_scale_factor: 1000000 - obs_add_offset: 0 + obs_datasets: + - obs_name: "CAMS" + obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" + obs_var_name: "BURDENDUST" + obs_scale_factor: 1000000 + obs_add_offset: 0 BURDENPOM: category: "Aerosols" @@ -107,11 +110,12 @@ BURDENSEASALT: diff_colormap: "RdBu_r" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" - obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_var_name: "BURDENSEASALT" - obs_name: "CAMS" - obs_scale_factor: 1000000 - obs_add_offset: 0 + obs_datasets: + - obs_name: "CAMS" + obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" + obs_var_name: "BURDENSEASALT" + obs_scale_factor: 1000000 + obs_add_offset: 0 BURDENSO4: category: "Aerosols" @@ -122,11 +126,12 @@ BURDENSO4: pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" diff_colormap: "RdBu_r" - obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_name: "CAMS" - obs_var_name: "BURDENSO4" - obs_scale_factor: 1000000 - obs_add_offset: 0 + obs_datasets: + - obs_name: "CAMS" + obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" + obs_var_name: "BURDENSO4" + obs_scale_factor: 1000000 + obs_add_offset: 0 BURDENSOA: category: "Aerosols" diff --git a/lib/adf_variable_defaults_era5-1deg.yaml b/lib/adf_variable_defaults_era5-1deg.yaml deleted file mode 100644 index 39f6917f4..000000000 --- a/lib/adf_variable_defaults_era5-1deg.yaml +++ /dev/null @@ -1,2100 +0,0 @@ - -#This file lists out variable-specific defaults -#for plotting and observations. These defaults -#are: -# -# PLOTTING: -# -# colormap -> The colormap that will be used for filled contour plots. -# contour_levels -> A list of the specific contour values that will be used for contour plots. -# Cannot be used with "contour_levels_range". -# contour_levels_range -> The contour range that will be used for plots. -# Values are min, max, and stride. Cannot be used with "contour_levels". -# diff_colormap -> The colormap that will be used for filled contour different plots -# diff_contour_levels -> A list of the specific contour values thta will be used for difference plots. -# Cannot be used with "diff_contour_range". -# diff_contour_range -> The contour range that will be used for difference plots. -# Values are min, max, and stride. Cannot be used with "diff_contour_levels". -# scale_factor -> Amount to scale the variable (relative to its "raw" model values). -# add_offset -> Amount of offset to add to the variable (relatie to its "raw" model values). -# new_unit -> Variable units (if not using the "raw" model units). -# mpl -> Dictionary that contains keyword arguments explicitly for matplotlib -# -# mask -> Setting that specifies whether the variable should be masked. -# Currently only accepts "ocean", which means the variable will be masked -# everywhere that isn't open ocean. -# -# -# OBSERVATIONS: -# -# obs_file -> Path to observations file. If only the file name is given, then the file is assumed to -# exist in the path specified by "obs_data_loc" in the config file. -# obs_name -> Name of the observational dataset (mostly used for plotting and generated file naming). -# If this isn't present then the obs_file name is used. -# obs_var_name -> Variable in the observations file to compare against. If this isn't present then the -# variable name is assumed to be the same as the model variable name. -# -# -# VECTORS: -# -# vector_pair -> Another variable that when combined with the given variable makes up a vector pair. -# If this default is not present then it is assumed the given variable is not a vector -# component, and will thus be skipped during the vector plotting phase. -# vector_name -> The name of the vector the variable is associated with, which will be used to -# title the respective vector plot(s). -# -# -# WEBSITE: -# -# category -> The website category the variable will be placed under. -# -# -# DERIVING: -# -# derivable_from -> If not present in the available output files, the variable can be derived from -# other variables that are present (e.g. PRECT can be derived from PRECC and PRECL), -# which are specified in this list -# NOTE: this is not very flexible at the moment! It can only handle variables that -# are sums of the constituents. Futher flexibility is being explored. -# -# -# Final Note: Please do not modify this file unless you plan to push your changes back to the ADF repo. -# If you would like to modify this file for your personal ADF runs then it is recommended -# to make a copy of this file, make modifications in that copy, and then point the ADF to -# it using the "defaults_file" config variable. -# -#+++++++++++ - -#+++++++++++++ -# Available ADF Default Plot Types -#+++++++++++++ -default_ptypes: ["Tables","LatLon","LatLon_Vector","Zonal","Meridional", - "NHPolar","SHPolar","TimeSeries","ENSO","GlobalHistogramTS", - "GlobalHistogramClimo","Special"] - -#+++++++++++++ -# Constants -#+++++++++++++ - -#Dry Air Gas Constant: -Rgas: 287.04 #[J/K/Kg]=8.314/0.028965 - -#+++++++++++++ -# CAM-CHEM Variables -#+++++++++++++ -#List of variables for CAM-CHEM runs that have different constituents than regular CAM runs -cam_chem_list: ["SOA","SO4"] - -#+++++++++++++ -# Category: Microphysics -#+++++++++++++ - -ACTNI: - category: "Microphysics" - -ACTNL: - category: "Microphysics" - -ACTREI: - category: "Microphysics" - -ACTREL: - category: "Microphysics" - -ADRAIN: - category: "Microphysics" - -ADSNOW: - category: "Microphsyics" - -AREI: - category: "Microphysics" - -AREL: - category: "Microphysics" - -CDNUMC: - category: "Microphysics" - -FREQI: - category: "Microphysics" - -FREQL: - category: "Microphysics" - -FREQR: - category: "Microphysics" - -FREQS: - category: "Microphysics" - -FCTL: - category: "Microphysics" - -FCTI: - category: "Microphysics" - -FICE: - category: "Microphysics" - -#+++++++++++++++++ -# Category: Budget -#+++++++++++++++++ - -DCQ: - category: "Budget" - -DQCORE: - category: "Budget" - -DTCORE: - category: "Budget" - -EVAPPREC: - category: "Budget" - -EVAPSNOW: - category: "Budget" - -MPDICE: - category: "Budget" - -MPDLIQ: - category: "Budget" - -MPDQ: - category: "Budget" - -PTEQ: - category: "Budget" - -ZMDQ: - category: "Budget" - -ZMDT: - category: "Budget" - -#+++++++++++++++++ -# Category: Deep Convection -#+++++++++++++++++ - -CAPE: - category: "Deep Convection" - obs_file: "CAPE_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "CAPE" - -CMFMC_DP: - category: "Deep Convection" - -FREQZM: - category: "Deep Convection" - -#+++++++++++++++++ -# Category: GW -#+++++++++++++++++ - -QTGW: - category: "GW" - -UGTW_TOTAL: - category: "GW" - -UTGWORO: - category: "GW" - -VGTW_TOTAL: - category: "GW" - -VTGWORO: - category: "GW" - - -#+++++++++++++++++ -# Category: Composition -#+++++++++++++++++ -CO: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO01: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO02: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO03: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO04: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO05: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO06: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO07: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO08: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO09: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO10: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO11: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO12: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO13: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -O3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -N2O: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HNO3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -NO: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000000.0 - new_unit: "pptv" -NO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000000.0 - new_unit: "pptv" -NOX: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000000.0 - new_unit: "pptv" -NOY: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000000.0 - new_unit: "pptv" -OH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000000.0 - new_unit: "pptv" -BIGALK: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C2H4: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C2H5O2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C2H5OH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C2H5OOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C2H6: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C3H6: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C3H7O2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C3H7OOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -C3H8: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CCL4: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CFC11: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CFC113: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CFC114: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CFC115: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CFC12: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH2O: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3BR: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3CCL3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3CHO: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3CL: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3CO3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3COCH3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3COCHO: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3COOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3COOOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3O2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3OH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH3OOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CH4: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CHBR3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CLO: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CLONO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CLOX: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CLOY: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -CO2: - category: "Composition" - #contour_levels_range: [300,450,10.0] - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000.0 - new_unit: "ppmv" -E90: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -GLYALD: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -GLYOXAL: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -H2402: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -H2O2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -H2SO4: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HCFC141B: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HCFC142B: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HCFC22: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HCL: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HCL_GAS: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HNO3_GAS: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HO2NO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HOBR: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HYAC: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -HYDRALD: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -ISOP: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -ISOPNO3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -ISOPO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -ISOPOOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -MACR: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -MACRO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -MACROOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -MVK: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -N2O5: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -NH3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -NH4: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -NO3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -O3S: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -OCLO: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -OCS: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -ONITR: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -PAN: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -POOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -RO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -ROOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -SO3: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -SOAE: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -TERP: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -XO2: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" -XOOH: - category: "Composition" - colormap: "jet" - diff_colormap: "gist_ncar" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 1000000000.0 - new_unit: "ppbv" - - -#+++++++++++++++++ -# Category: Clouds -#+++++++++++++++++ - -CLDICE: - category: "Clouds" - obs_file: "CLDICE_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "CLDICE" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLDLIQ: - category: "Clouds" - obs_file: "CLDLIQ_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "CLDLIQ" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLDTOT: - colormap: "Oranges" - contour_levels_range: [0.2, 1.1, 0.05] - diff_colormap: "BrBG" - diff_contour_range: [-0.4, 0.4, 0.05] - new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDTOT" - category: "Clouds" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLDLOW: - colormap: "Oranges" - contour_levels_range: [0, 1.05, 0.05] - diff_colormap: "BrBG" - diff_contour_range: [-0.4, 0.4, 0.05] - new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDLOW" - category: "Clouds" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLDHGH: - colormap: "Oranges" - contour_levels_range: [0, 1.05, 0.05] - diff_colormap: "BrBG" - diff_contour_range: [-0.4, 0.4, 0.05] - new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDHGH" - category: "Clouds" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLDMED: - colormap: "Oranges" - contour_levels_range: [0, 1.05, 0.05] - diff_colormap: "BrBG" - diff_contour_range: [-0.4, 0.4, 0.05] - new_unit: "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "CLDMED" - category: "Clouds" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLOUD: - colormap: "Blues" - contour_levels_range: [0, 105, 5] - diff_colormap: "BrBG" - diff_contour_range: [-15, 15, 2] - scale_factor: 100 - add_offset: 0 - new_unit: "Percent" - mpl: - colorbar: - label : "Percent" - category: "Clouds" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CONCLD: - category: "Clouds" - -TGCLDLWP: - colormap: "Blues" - contour_levels_range: [0, 400, 10] - diff_colormap: "BrBG" - diff_contour_range: [-100, 100, 10] - new_unit: "g m$^{-2}$" - mpl: - colorbar: - label : "g m$^{-2}$" - category: "Clouds" - obs_file: "TGCLDLWP_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_derivable_from: ['TGCLDWP'] - obs_derivation_formula: "TGCLDWP * 1000" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TGCLDIWP: - colormap: "Blues" - contour_levels_range: [0, 100, 5] - diff_colormap: "BrBG" - diff_contour_range: [-50, 50, 5] - new_unit: "g m$^{-2}$" - mpl: - colorbar: - label : "g m$^{-2}$" - category: "Clouds" - obs_file: "TGCLDIWP_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_derivable_from: ['TGCLDIWP'] - obs_derivation_formula: "TGCLDIWP * 1000" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CCN3: - category: "Clouds" - -#+++++++++++++++++ -# Category: CLUBB -#+++++++++++++++++ - -RVMTEND_CLUBB: - category: "CLUBB" - -STEND_CLUBB: - category: "CLUBB" - -WPRTP_CLUBB: - category: "CLUBB" - -WPTHLP_CLUBB: - category: "CLUBB" - -#+++++++++++++++++ -# Category: hydrologic cycle -#+++++++++++++++++ - -PRECC: - colormap: "Greens" - contour_levels_range: [0, 20, 1] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 - new_unit: "mm d$^{-1}$" - mpl: - colorbar: - label : "mm/d" - category: "Hydrologic cycle" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PRECL: - colormap: "Greens" - contour_levels_range: [0, 20, 1] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 - new_unit: "mm d$^{-1}$" - mpl: - colorbar: - label : "mm d$^{-1}$" - category: "Hydrologic cycle" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PRECSC: - colormap: "Greens" - contour_levels_range: [0, 20, 1] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 - new_unit: "mm d$^{-1}$" - mpl: - colorbar: - label : "mm d$^{-1}$" - category: "Hydrologic cycle" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PRECSL: - colormap: "Greens" - contour_levels_range: [0, 20, 1] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 - new_unit: "mm d$^{-1}$" - mpl: - colorbar: - label : "mm d$^{-1}$" - category: "Hydrologic cycle" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PRECT: - colormap: "Blues" - contour_levels_range: [0, 20, 1] - diff_colormap: "seismic" - diff_contour_range: [-10, 10, 0.5] - scale_factor: 86400000 - add_offset: 0 - new_unit: "mm d$^{-1}$" - mpl: - colorbar: - label : "mm d$^{-1}$" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "PRECT" - category: "Hydrologic cycle" - derivable_from: ['PRECL','PRECC'] - derivation_formula: "PRECC + PRECL" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -QFLX: - category: "Hydrologic cycle" - -#+++++++++++++++++ -# Category: Surface variables -#+++++++++++++++++ - -PBLH: - category: "Surface variables" - obs_file: "PBLH_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "PBLH" - -PSL: - colormap: "Oranges" - contour_levels_range: [980, 1052, 4] - diff_colormap: "PuOr_r" - diff_contour_range: [-9, 9, 0.5] - scale_factor: 0.01 - add_offset: 0 - new_unit: "hPa" - mpl: - colorbar: - label : "hPa" - category: "Surface variables" - obs_file: "PSL_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "PSL" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PS: - colormap: "Oranges" - contour_levels: [500,600,630,660,690,720,750,780,810,840,870,900,930,960,990,1020,1050] - diff_colormap: "PuOr_r" - diff_contour_range: [-9, 9, 0.5] - scale_factor: 0.01 - add_offset: 0 - new_unit: "hPa" - mpl: - colorbar: - label : "hPa" - category: "Surface variables" - obs_file: "PS_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "PS" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TREFHT: - category: "Surface variables" - obs_file: "TREFHT_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "TREFHT" - -TS: - colormap: "Blues" - contour_levels_range: [220,320, 5] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 1] - new_unit: "K" - mpl: - colorbar: - label : "K" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "TS" - category: "Surface variables" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SST: - colormap: "Blues" - contour_levels_range: [220,320, 5] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 1] - new_unit: "K" - mpl: - colorbar: - label : "K" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "TS" - category: "Surface variables" - mask: "ocean" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -U10: - category: "Surface variables" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -Surface_Wind_Stress: - category: "Surface variables" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TAUX: - vector_pair: "TAUY" - vector_name: "Surface_Wind_Stress" - category: "Surface variables" - scale_factor: -1 - add_offset: 0 - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - obs_file: "TAUX_ERA5_monthly_climo_1degree_197901-202212.nc" - obs_name: "ERA5" - obs_var_name: "TAUX" - -TAUY: - vector_pair: "TAUX" - vector_name: "Surface_Wind_Stress" - category: "Surface variables" - scale_factor: -1 - add_offset: 0 - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -ICEFRAC: - category: "Surface variables" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -OCNFRAC: - category: "Surface variables" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -LANDFRAC: - category: "Surface variables" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - obs_file: "ERA5_LSM_1deg_conservativeregrid.nc" - obs_name: "ERA5" - obs_var_name: "LANDFRAC" - -#+++++++++++++++++ -# Category: State -#+++++++++++++++++ - -TMQ: - colormap: "Oranges" - contour_levels_range: [0, 75.0, 5.0] - diff_colormap: "BrBG" - diff_contour_range: [-10, 10, 0.5] - new_unit: "kg m$^{-2}$" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "PREH2O" - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -RELHUM: - colormap: "Blues" - contour_levels_range: [0, 105, 5] - diff_colormap: "BrBG" - diff_contour_range: [-15, 15, 2] - new_unit: "Fraction" - mpl: - colorbar: - label : "Fraction" - obs_file: "RELHUM_ERA5_monthly_climo_1degree_197901-202212.nc" - obs_name: "ERA5" - obs_var_name: "RELHUM" - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -U: - colormap: "Blues" - contour_levels_range: [-10, 90, 5] - diff_colormap: "BrBG" - diff_contour_range: [-15, 15, 2] - new_unit: "ms$^{-1}$" - mpl: - colorbar: - label : "ms$^{-1}$" - obs_file: "U_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "U" - vector_pair: "V" - vector_name: "Wind" - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -V: - colormap: "Blues" - contour_levels_range: [-10, 90, 5] - diff_colormap: "BrBG" - diff_contour_range: [-15, 15, 2] - new_unit: "ms$^{-1}$" - mpl: - colorbar: - label : "ms$^{-1}$" - obs_file: "V_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "V" - vector_pair: "U" - vector_name: "Wind" - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -Q: - category: "State" - obs_file: "Q_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "Q" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -T: - category: "State" - obs_file: "T_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "T" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -OMEGA: - category: "State" - obs_file: "OMEGA_ERA5_monthly_climo_1degree_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "OMEGA" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -OMEGA500: - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - scale_factor: 864 - add_offset: 0 - new_unit: "hPa d$^{-1}$" - hist_bins: [-105, -100, -95, -90, -85, -80, -75, -70, -65, -60, -55, -50, -45, -40, -35, -30, -25, -20, -15, -10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100] - -PINT: - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PMID: - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -Z3: - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -Wind: - category: "State" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -#+++++++++++++++++ -# Category: Radiation -#+++++++++++++++++ - -QRL: - category: "Radiation" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -QRS: - category: "Radiation" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -#+++++++++++++++++ -# Category: TOA energy flux -#+++++++++++++++++ - -RESTOM: - colormap: "RdBu_r" - contour_levels_range: [-100, 100, 5] - diff_colormap: "seismic" - diff_contour_range: [-10, 10, 0.5] - new_unit: "W m$^{-2}$" - mpl: - colorbar: - label : "W m$^{-2}$" - category: "TOA energy flux" - derivable_from: ['FLNT','FSNT'] - derivation_formula: "FSNT - FLNT" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SWCF: - colormap: "Blues" - contour_levels_range: [-150, 50, 10] - diff_colormap: "BrBG" - diff_contour_range: [-20, 20, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_cre_sw_mon" - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -LWCF: - colormap: "Oranges" - contour_levels_range: [-10, 100, 5] - diff_colormap: "BrBG" - diff_contour_range: [-15, 15, 1] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_cre_lw_mon" - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSUTOA: - colormap: "Blues" - contour_levels_range: [-10, 180, 15] - diff_colormap: "BrBG" - diff_contour_range: [-15, 15, 1] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSNT: - colormap: "Blues" - contour_levels_range: [120, 320, 10] - diff_colormap: "BrBG" - diff_contour_range: [-20, 20, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "fsnt" - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSNTC: - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSNTOA: - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FLUT: - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FLNT: - colormap: "Oranges" - contour_levels_range: [120, 320, 10] - diff_colormap: "BrBG" - diff_contour_range: [-20, 20, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_lw_all_mon" - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FLNTC: - colormap: "Oranges" - contour_levels_range: [120, 320, 10] - diff_colormap: "BrBG" - diff_contour_range: [-20, 20, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "toa_lw_clr_t_mon" - category: "TOA energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -#+++++++++++++++++ -# Category: Surface energy flux -#+++++++++++++++++ - -FSDS: - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSDSC: - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSNS: - colormap: "Blues" - contour_levels_range: [-10, 300, 20] - diff_colormap: "BrBG" - diff_contour_range: [-24, 24, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "sfc_net_sw_all_mon" - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FSNSC: - colormap: "Blues" - contour_levels_range: [-10, 300, 20] - diff_colormap: "BrBG" - diff_contour_range: [-24, 24, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "sfc_net_sw_clr_t_mon" - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FLDS: - colormap: "Oranges" - contour_levels_range: [100, 500, 25] - diff_colormap: "BrBG" - diff_contour_range: [-20, 20, 2] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_name: "CERES_EBAF_Ed4.1" - obs_var_name: "sfc_lw_down_all_mon" - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FLNS: - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FLNSC: - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SHFLX: - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -LHFLX: - colormap: "Blues" - contour_levels_range: [0, 220, 10] - diff_colormap: "BrBG" - diff_contour_range: [-45, 45, 5] - new_unit: "Wm$^{-2}$" - mpl: - colorbar: - label : "Wm$^{-2}$" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "LHFLX" - category: "Sfc energy flux" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -#+++++++++++++++++ -# Category: COSP -#+++++++++++++++++ - -CLDTOT_ISCCP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLIMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLWMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -FISCCP1_COSP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -ICE_ICLD_VISTAU: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -IWPMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -LIQ_ICLD_VISTAU: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -LWPMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -MEANCLDALB_ISCCP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -MEANPTOP_ISCCP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -MEANTAU_ISCCP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -MEANTB_ISCCP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -MEANTBCLR_ISCCP: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -PCTMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -REFFCLIMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -REFFCLWMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -SNOW_ICLD_VISTAU: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TAUTMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TAUWMODIS: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TOT_CLD_VISTAU: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -TOT_ICLD_VISTAU: - category: "COSP" - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -CLDTOT_CAL: - colormap: "cividis" - contour_levels_range: [0, 105, 5] - diff_colormap: "RdBu_r" - diff_contour_range: [-40, 40, 5] - new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDTOT_CAL" - category: "COSP" - -CLDHGH_CAL: - colormap: "cividis" - contour_levels_range: [0, 105, 5] - diff_colormap: "RdBu_r" - diff_contour_range: [-40, 40, 5] - new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDHGH_CAL" - category: "COSP" - -CLDMED_CAL: - colormap: "cividis" - contour_levels_range: [0, 105, 5] - diff_colormap: "RdBu_r" - diff_contour_range: [-40, 40, 5] - new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDMED_CAL" - category: "COSP" - -CLDLOW_CAL: - colormap: "cividis" - contour_levels_range: [0, 105, 5] - diff_colormap: "RdBu_r" - diff_contour_range: [-40, 40, 5] - new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLDLOW_CAL" - category: "COSP" - -CLD_CAL: - colormap: "cividis" - contour_levels_range: [0, 105, 5] - diff_colormap: "RdBu_r" - diff_contour_range: [-40, 40, 5] - new_unit: "Percent" - obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" - obs_name: "CALIPSO" - obs_var_name: "CLD_CAL" - category: "COSP" - - -#+++++++++++++++++ -# Category: Other -#+++++++++++++++++ - -H2O: - colormap: "PuOr_r" - diff_colormap: "BrBG" - new_unit: "mol mol$^{-1}$" - mpl: - colorbar: - label: "mol mol$^{-1}$" - plot_log_pressure: True - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -OMEGAT: - colormap: "PuOr_r" - diff_colormap: "coolwarm" - plot_log_pressure: True - pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] - pct_diff_colormap: "PuOr_r" - -#++++++++++++++ -# Category: TEM -#++++++++++++++ - -uzm: - ylim: [1e3,1] - units: m s-1 - long_name: Zonal-Mean zonal wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "uzm" - -vzm: - ylim: [1e3,1] - units: m s-1 - long_name: Zonal-Mean meridional wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "vzm" - -epfy: - ylim: [1e2,1] - units: m3 s−2 - long_name: northward component of the Eliassen–Palm flux - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "epfy" - -epfz: - ylim: [1e2,1] - units: m3 s−2 - long_name: upward component of the Eliassen–Palm flux - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "epfz" - -vtem: - ylim: [1e2,1] - units: m/s - long_name: Transformed Eulerian mean northward wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "vtem" - -wtem: - ylim: [1e2,1] - units: m/s - long_name: Transformed Eulerian mean upward wind - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "wtem" - -psitem: - ylim: [1e2,1] - units: m3 s−2 - long_name: Transformed Eulerian mean mass stream function - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "psitem" - -utendepfd: - ylim: [1e2,1] - units: m3 s−2 - long_name: tendency of eastward wind due to Eliassen-Palm flux divergence - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "utendepfd" - -utendvtem: - ylim: [1e2,1] - units: m3 s−2 - long_name: tendency of eastward wind due to TEM northward wind advection and the coriolis term - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "utendvtem" - -utendwtem: - ylim: [1e2,1] - units: m3 s−2 - long_name: tendency of eastward wind due to TEM upward wind advection - obs_file: "TEM_ERA5.nc" - obs_name: "ERA5" - obs_var_name: "utendwtem" - -####### - - - -# Plot Specific formatting -########################## - -# Chemistry and Aerosol Budget Tables -#------------------------------------ -budget_tables: - # INPUTS - #list of the gaseous variables to be caculated. - GAS_VARIABLES: ['CH4','CH3CCL3', 'CO', 'O3', 'ISOP', 'MTERP', 'CH3OH', 'CH3COCH3','DMS','DMS_OASISS'] - - # list of the aerosol variables to be caculated. - AEROSOL_VARIABLES: ['AOD','SOA', 'SALT', 'DUST', 'POM', 'BC', 'SO4'] - - # For the case that outputs are saved for a specific region. - # i.e., when using fincllonlat in user_nl_cam - ext1_SE: '' - - # Tropospheric Values - # ------------------- - # if True, calculate only Tropospheric values - # if False, all layers - # tropopause is defiend as o3>150ppb. If needed, change accordingly. - Tropospheric: True - - ### NOT WORKING FOR NOW - # To calculate the budgets only for a region - # Lat/Lon extent - limit: (20,20,40,120) - regional: False - - #Dictionary for Molecular weights. Keys must be consistent with variable name - # For aerosols, the MW is used only for chemical loss, chemical production, and elevated emission calculations - # For SO4, we report everything in terms of Sulfur, so we use Sulfur MW here - MW: {'O3':48, - 'CH4':16, - 'CO':28, - 'ISOP':68, - 'MTERP':136, - 'SOA':144.132, - 'SALT':58.4412, - 'SO4':32.066, - 'POM':12.011, - 'BC':12.011 , - 'DUST':168.0456, - 'CH3CCL3':133.4042, - 'CH3OH':32, - 'CH3COCH3':58, - 'DMS':62.136, - 'DMS_OASISS':62.136, - 'AOD':1} - - # Avogadro's Number - AVO: 6.022e23 - # gravity - gr: 9.80616 - # Mw air - Mwair: 28.97 - - # The variables in the list below must be aerosols - do not add AOD and DAOD - # WARNING: no need to change this list, unless for a specific need! - AEROSOLS: ['SOA', 'SALT', 'DUST', 'POM', 'BC', 'SO4'] - -#----------- - - - -# Plot Specific formatting -########################## - -# AOD 4-Panel plots vs MERRA and MODIS -#------------------------------------- -aod_diags: - plot_params: - range_min: -0.4 - range_max: 0.4 - nlevel: 17 - colormap: "bwr" - - plot_params_relerr: - range_max: 100 - range_min: -100 - nlevel: 21 - colormap: "PuOr_r" - -#----------- - -#End of File diff --git a/lib/adf_variable_defaults_noresm.yaml b/lib/adf_variable_defaults_noresm.yaml index 4c625a065..8ea0eeb15 100644 --- a/lib/adf_variable_defaults_noresm.yaml +++ b/lib/adf_variable_defaults_noresm.yaml @@ -170,11 +170,12 @@ cb_BC: pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" diff_colormap: "RdBu_r" - obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" - obs_var_name: "BURDENBC" - obs_name: "MERRA2" - obs_derivable_from: ['BURDENBC'] - obs_derivation_formula: "BURDENBC * 1e6" + obs_datasets: + - obs_name: "MERRA2" + obs_file: "BURDENBC_MERRA2_monthly_climo_1degree_200001-202506.nc" + obs_var_name: "BURDENBC" + obs_derivable_from: ['BURDENBC'] + obs_derivation_formula: "BURDENBC * 1e6" cb_SULFATE: category: "Aerosols" @@ -187,11 +188,12 @@ cb_SULFATE: new_unit: 'g m$^{-2}$' pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" - obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_name: "CAMS" - obs_var_name: "BURDENSO4" - obs_derivable_from: ['BURDENSO4'] - obs_derivation_formula: "BURDENSO4 * 1e6" + obs_datasets: + - obs_name: "CAMS" + obs_file: "BURDENSO4_CAMS_monthly_climo_1degree_200301-202412.nc" + obs_var_name: "BURDENSO4" + obs_derivable_from: ['BURDENSO4'] + obs_derivation_formula: "BURDENSO4 * 1e6" cb_isoprene: category: "Aerosols" @@ -239,11 +241,12 @@ cb_DUST: scale_factor: 1000000 add_offset: 0 new_unit: "1e-6 kg/m2" - obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_var_name: "BURDENDUST" - obs_name: "CAMS" - obs_derivable_from: ['BURDENDUST'] - obs_derivation_formula: "BURDENDUST * 1e6" + obs_datasets: + - obs_name: "CAMS" + obs_file: "BURDENDUST_CAMS_monthly_climo_1degree_200301-202412.nc" + obs_var_name: "BURDENDUST" + obs_derivable_from: ['BURDENDUST'] + obs_derivation_formula: "BURDENDUST * 1e6" cb_OM: category: "Aerosols" @@ -284,11 +287,12 @@ cb_SALT: scale_factor: 1000000 add_offset: 0 new_unit: "1e-6 kg/m2" - obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" - obs_var_name: "BURDENSEASALT" - obs_name: "CAMS" - obs_derivable_from: ['BURDENSEASALT'] - obs_derivation_formula: "BURDENSEASALT * 1e6" + obs_datasets: + - obs_name: "CAMS" + obs_file: "BURDENSEASALT_CAMS_monthly_climo_1degree_200301-202412.nc" + obs_var_name: "BURDENSEASALT" + obs_derivable_from: ['BURDENSEASALT'] + obs_derivation_formula: "BURDENSEASALT * 1e6" cb_SO2: category: "Aerosols" From d18a0f9921537da1e4b0bec4b1f2ece1250423ac Mon Sep 17 00:00:00 2001 From: mvertens Date: Fri, 24 Jul 2026 15:06:27 +0200 Subject: [PATCH 10/12] brought in changes from adf_variable_defaults_era5-1deg.yaml into adf_variable_defaults.yaml --- lib/adf_variable_defaults.yaml | 112 ++++++++++++++++++++++++--------- 1 file changed, 81 insertions(+), 31 deletions(-) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index b778ff8f2..b679ffc67 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -183,6 +183,9 @@ CAPE: - obs_name: "ERA5" obs_file: "CAPE_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "CAPE" + - obs_name: "ERA5_1deg" + obs_file: "CAPE_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "CAPE" CMFMC_DP: category: "Deep Convection" @@ -1035,10 +1038,14 @@ CLDLIQ: - obs_name: "ERA5" obs_file: "CLDLIQ_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "CLDLIQ" + - obs_name: "ERA5_1deg" + obs_file: "CLDLIQ_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "CLDLIQ" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" CLDTOT: + category: "Clouds" colormap: "Oranges" contour_levels_range: [0.2, 1.1, 0.05] diff_colormap: "BrBG" @@ -1048,11 +1055,11 @@ CLDTOT: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "CLDTOT" - category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" CLDLOW: + category: "Clouds" colormap: "Oranges" contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" @@ -1062,11 +1069,11 @@ CLDLOW: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "CLDLOW" - category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" CLDHGH: + category: "Clouds" colormap: "Oranges" contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" @@ -1076,11 +1083,11 @@ CLDHGH: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "CLDHGH" - category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" CLDMED: + category: "Clouds" colormap: "Oranges" contour_levels_range: [0, 1.05, 0.05] diff_colormap: "BrBG" @@ -1090,11 +1097,11 @@ CLDMED: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "CLDMED" - category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" CLOUD: + category: "Clouds" colormap: "Blues" contour_levels_range: [0, 105, 5] diff_colormap: "BrBG" @@ -1104,7 +1111,6 @@ CLOUD: mpl: colorbar: label : "Percent" - category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1112,6 +1118,7 @@ CONCLD: category: "Clouds" TGCLDLWP: + category: "Clouds" colormap: "Blues" contour_levels_range: [0, 400, 10] diff_colormap: "BrBG" @@ -1120,7 +1127,6 @@ TGCLDLWP: mpl: colorbar: label : "g m$^{-2}$" - category: "Clouds" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" obs_datasets: @@ -1128,8 +1134,13 @@ TGCLDLWP: obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" obs_derivable_from: ['TGCLDWP'] obs_derivation_formula: "TGCLDWP * 1000" + - obs_name: "ERA5_1deg" + obs_file: "TGCLDLWP_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_derivable_from: ['TGCLDWP'] + obs_derivation_formula: "TGCLDWP * 1000" TGCLDIWP: + category: "Clouds" colormap: "Blues" contour_levels_range: [0, 100, 5] diff_colormap: "BrBG" @@ -1138,12 +1149,15 @@ TGCLDIWP: mpl: colorbar: label : "g m$^{-2}$" - category: "Clouds" obs_datasets: - obs_name: "ERA5" obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" obs_derivable_from: ['TGCLDIWP'] obs_derivation_formula: "TGCLDIWP * 1000" + - obs_name: "ERA5_1deg" + obs_file: "TGCLDIWP_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_derivable_from: ['TGCLDIWP'] + obs_derivation_formula: "TGCLDIWP * 1000" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1262,8 +1276,12 @@ PBLH: - obs_name: "ERA5" obs_file: "PBLH_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "PBLH" + - obs_name: "ERA5_1deg" + obs_file: "PBLH_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "PBLH" PSL: + category: "Surface variables" colormap: "Oranges" contour_levels_range: [980, 1052, 4] diff_colormap: "PuOr_r" @@ -1273,15 +1291,18 @@ PSL: mpl: colorbar: label : "hPa" - category: "Surface variables" obs_datasets: - obs_name: "ERA5" obs_file: "PSL_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "PSL" + - obs_name: "ERA5_1deg" + obs_file: "PSL_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "PSL" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" PS: + category: "Surface variables" colormap: "Oranges" contour_levels: [500,600,630,660,690,720,750,780,810,840,870,900,930,960,990,1020,1050] diff_colormap: "PuOr_r" @@ -1291,11 +1312,13 @@ PS: mpl: colorbar: label : "hPa" - category: "Surface variables" obs_datasets: - obs_name: "ERA5" obs_file: "PS_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "PS" + - obs_name: "ERA5_1deg" + obs_file: "PS_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "PS" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1308,8 +1331,12 @@ TREFHT: - obs_name: "ERA5" obs_file: "TREFHT_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "TREFHT" + - obs_name: "ERA5_1deg" + obs_file: "TREFHT_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "TREFHT" TS: + category: "Surface variables" colormap: "Blues" contour_levels_range: [220,320, 5] diff_colormap: "BrBG" @@ -1322,11 +1349,11 @@ TS: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "TS" - category: "Surface variables" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" SST: + category: "Surface variables" colormap: "Blues" contour_levels_range: [220,320, 5] diff_colormap: "BrBG" @@ -1339,7 +1366,6 @@ SST: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "TS" - category: "Surface variables" mask: "ocean" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1355,9 +1381,9 @@ Surface_Wind_Stress: pct_diff_colormap: "PuOr_r" TAUX: + category: "Surface variables" vector_pair: "TAUY" vector_name: "Surface_Wind_Stress" - category: "Surface variables" scale_factor: -1 pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1365,11 +1391,14 @@ TAUX: - obs_name: "ERA5" obs_file: "TAUX_ERA5_monthly_climo_1degree_197901-202212.nc" obs_var_name: "TAUX" + - obs_name: "ERA5_1deg" + obs_file: "TAUX_ERA5_monthly_climo_1degree_197901-202212.nc" + obs_var_name: "TAUX" TAUY: + category: "Surface variables" vector_pair: "TAUX" vector_name: "Surface_Wind_Stress" - category: "Surface variables" scale_factor: -1 pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1388,8 +1417,12 @@ LANDFRAC: category: "Surface variables" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" + - obs_name: "ERA5_1deg" + obs_file: "ERA5_LSM_1deg_conservativeregrid.nc" + obs_var_name: "LANDFRAC" ALBEDO: + category: "Surface variables" colormap: "Blues" contour_levels_range: [0, 1, .1] diff_colormap: "BrBG" @@ -1405,9 +1438,9 @@ ALBEDO: obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_derivable_from: ['solar_mon','fsnt'] obs_derivation_formula: "(solar_mon-fsnt)/solar_mon" - category: "TOA energy flux" ALBEDOC: + category: "Surface variables" colormap: "Blues" contour_levels_range: [0, 1, .05] diff_colormap: "BrBG" @@ -1424,13 +1457,13 @@ ALBEDOC: obs_var_name: "ALBEDOC" obs_derivable_from: ['solar_mon','total_sw_clr_c_mon'] obs_derivation_formula: "total_sw_clr_c_mon/solar_mon" - category: "TOA energy flux" #+++++++++++++++++ # Category: State #+++++++++++++++++ TMQ: + category: "State" colormap: "Oranges" contour_levels_range: [0, 75.0, 5.0] diff_colormap: "BrBG" @@ -1440,11 +1473,11 @@ TMQ: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "PREH2O" - category: "State" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" RELHUM: + category: "State" colormap: "Blues" contour_levels_range: [0, 105, 5] diff_colormap: "BrBG" @@ -1457,11 +1490,14 @@ RELHUM: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "RELHUM" - category: "State" + - obs_name: "ERA5_1deg" + obs_file: "RELHUM_ERA5_monthly_climo_1degree_197901-202212.nc" + obs_var_name: "RELHUM" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" U: + category: "State" colormap: "Blues" contour_levels_range: [-10, 90, 5] diff_colormap: "BrBG" @@ -1474,13 +1510,16 @@ U: - obs_name: "ERA5" obs_file: "U_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "U" + - obs_name: "ERA5_1deg" + obs_file: "U_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "U" vector_pair: "V" vector_name: "Wind" - category: "State" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" V: + category: "State" colormap: "Blues" contour_levels_range: [-10, 90, 5] diff_colormap: "BrBG" @@ -1493,9 +1532,11 @@ V: - obs_name: "ERA5" obs_file: "V_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "V" + - obs_name: "ERA5_1deg" + obs_file: "V_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "V" vector_pair: "U" vector_name: "Wind" - category: "State" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1505,6 +1546,9 @@ Q: - obs_name: "ERA5" obs_file: "Q_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "Q" + - obs_name: "ERA5_1deg" + obs_file: "Q_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "Q" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1514,6 +1558,9 @@ T: - obs_name: "ERA5" obs_file: "T_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "T" + - obs_name: "ERA5_1deg" + obs_file: "T_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "T" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1523,6 +1570,9 @@ OMEGA: - obs_name: "ERA5" obs_file: "OMEGA_ERA5_monthly_climo_197901-202112.nc" obs_var_name: "OMEGA" + - obs_name: "ERA5_1deg" + obs_file: "OMEGA_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "OMEGA" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1573,6 +1623,7 @@ QRS: #+++++++++++++++++ RESTOM: + category: "TOA energy flux" colormap: "RdBu_r" contour_levels_range: [-100, 100, 5] diff_colormap: "seismic" @@ -1581,13 +1632,13 @@ RESTOM: mpl: colorbar: label : "W m$^{-2}$" - category: "TOA energy flux" derivable_from: ['FLNT','FSNT'] derivation_formula: "FSNT - FLNT" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" SWCF: + category: "TOA energy flux" colormap: "Blues" contour_levels_range: [-150, 50, 10] diff_colormap: "BrBG" @@ -1600,11 +1651,11 @@ SWCF: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "toa_cre_sw_mon" - category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" LWCF: + category: "TOA energy flux" colormap: "Oranges" contour_levels_range: [-10, 100, 5] diff_colormap: "BrBG" @@ -1617,11 +1668,11 @@ LWCF: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "toa_cre_lw_mon" - category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" FSUTOA: + category: "TOA energy flux" colormap: "Blues" contour_levels_range: [-10, 180, 15] diff_colormap: "BrBG" @@ -1630,11 +1681,11 @@ FSUTOA: mpl: colorbar: label : "Wm$^{-2}$" - category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" FSNT: + category: "TOA energy flux" colormap: "Blues" contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" @@ -1647,7 +1698,6 @@ FSNT: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "fsnt" - category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1684,6 +1734,7 @@ FLNT: pct_diff_colormap: "PuOr_r" FLNTC: + category: "TOA energy flux" colormap: "Oranges" contour_levels_range: [120, 320, 10] diff_colormap: "BrBG" @@ -1696,7 +1747,6 @@ FLNTC: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "toa_lw_clr_t_mon" - category: "TOA energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1715,6 +1765,7 @@ FSDSC: pct_diff_colormap: "PuOr_r" FSNS: + category: "Sfc energy flux" colormap: "Blues" contour_levels_range: [-10, 300, 20] diff_colormap: "BrBG" @@ -1727,11 +1778,11 @@ FSNS: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "sfc_net_sw_all_mon" - category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" FSNSC: + category: "Sfc energy flux" colormap: "Blues" contour_levels_range: [-10, 300, 20] diff_colormap: "BrBG" @@ -1744,11 +1795,11 @@ FSNSC: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "sfc_net_sw_clr_t_mon" - category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" FLDS: + category: "Sfc energy flux" colormap: "Oranges" contour_levels_range: [100, 500, 25] diff_colormap: "BrBG" @@ -1761,7 +1812,6 @@ FLDS: - obs_name: "CERES_EBAF_Ed4.1" obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" obs_var_name: "sfc_lw_down_all_mon" - category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1781,6 +1831,7 @@ SHFLX: pct_diff_colormap: "PuOr_r" LHFLX: + category: "Sfc energy flux" colormap: "Blues" contour_levels_range: [0, 220, 10] diff_colormap: "BrBG" @@ -1793,7 +1844,6 @@ LHFLX: - obs_name: "ERAI" obs_file: "ERAI_all_climo.nc" obs_var_name: "LHFLX" - category: "Sfc energy flux" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1931,6 +1981,7 @@ CLDHGH_CAL: category: "COSP" CLDMED_CAL: + category: "COSP" colormap: "cividis" contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" @@ -1940,7 +1991,6 @@ CLDMED_CAL: - obs_name: "CALIPSO" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_var_name: "CLDMED_CAL" - category: "COSP" CLDLOW_CAL: colormap: "cividis" @@ -1955,6 +2005,7 @@ CLDLOW_CAL: category: "COSP" CLD_CAL: + category: "COSP" colormap: "cividis" contour_levels_range: [0, 105, 5] diff_colormap: "RdBu_r" @@ -1964,7 +2015,6 @@ CLD_CAL: - obs_name: "CALIPSO" obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" obs_var_name: "CLD_CAL" - category: "COSP" #+++++++++++++++++ From 0b0a8724b4b651b5c772a3cb4722ef7a4e8026f1 Mon Sep 17 00:00:00 2001 From: mvertens Date: Fri, 24 Jul 2026 16:04:11 +0200 Subject: [PATCH 11/12] fixed problem in yaml file --- lib/adf_variable_defaults.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index b679ffc67..16125e189 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -1417,6 +1417,7 @@ LANDFRAC: category: "Surface variables" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" + obs_datasets: - obs_name: "ERA5_1deg" obs_file: "ERA5_LSM_1deg_conservativeregrid.nc" obs_var_name: "LANDFRAC" From 67417963525aaa4e6467701fc020caa3caf58f84 Mon Sep 17 00:00:00 2001 From: Mariana Vertenstein Date: Fri, 24 Jul 2026 17:08:09 +0200 Subject: [PATCH 12/12] fixed ALBEDOC --- lib/adf_variable_defaults.yaml | 74 +++++++++++++++++----------------- 1 file changed, 37 insertions(+), 37 deletions(-) diff --git a/lib/adf_variable_defaults.yaml b/lib/adf_variable_defaults.yaml index 16125e189..498c9e0b3 100644 --- a/lib/adf_variable_defaults.yaml +++ b/lib/adf_variable_defaults.yaml @@ -1422,43 +1422,6 @@ LANDFRAC: obs_file: "ERA5_LSM_1deg_conservativeregrid.nc" obs_var_name: "LANDFRAC" -ALBEDO: - category: "Surface variables" - colormap: "Blues" - contour_levels_range: [0, 1, .1] - diff_colormap: "BrBG" - diff_contour_range: [-0.5, 0.5, .05] - new_unit: "dimensionless" - derivable_from: ['SOLIN','FSNTOA'] - derivation_formula: "(SOLIN-FSNTOA)/SOLIN" - mpl: - colorbar: - label : "dimensionless" - obs_datasets: - - obs_name: "CERES-EBAF" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_derivable_from: ['solar_mon','fsnt'] - obs_derivation_formula: "(solar_mon-fsnt)/solar_mon" - -ALBEDOC: - category: "Surface variables" - colormap: "Blues" - contour_levels_range: [0, 1, .05] - diff_colormap: "BrBG" - diff_contour_range: [-0.3, 0.3, .05] - new_unit: "dimensionless" - derivable_from: ['SOLIN','FSNTOAC'] - derivation_formula: "(SOLIN-FSNTOAC)/SOLIN" - mpl: - colorbar: - label : "dimensionless" - obs_datasets: - - obs_name: "CERES_EBAF" - obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" - obs_var_name: "ALBEDOC" - obs_derivable_from: ['solar_mon','total_sw_clr_c_mon'] - obs_derivation_formula: "total_sw_clr_c_mon/solar_mon" - #+++++++++++++++++ # Category: State #+++++++++++++++++ @@ -1623,6 +1586,43 @@ QRS: # Category: TOA energy flux #+++++++++++++++++ +ALBEDO: + category: "TOA energy flux" + colormap: "Blues" + contour_levels_range: [0, 1, .1] + diff_colormap: "BrBG" + diff_contour_range: [-0.5, 0.5, .05] + new_unit: "dimensionless" + derivable_from: ['SOLIN','FSNTOA'] + derivation_formula: "(SOLIN-FSNTOA)/SOLIN" + mpl: + colorbar: + label : "dimensionless" + obs_datasets: + - obs_name: "CERES-EBAF" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_derivable_from: ['solar_mon','fsnt'] + obs_derivation_formula: "(solar_mon-fsnt)/solar_mon" + +ALBEDOC: + category: "TOA energy flux" + colormap: "Blues" + contour_levels_range: [0, 1, .05] + diff_colormap: "BrBG" + diff_contour_range: [-0.3, 0.3, .05] + new_unit: "dimensionless" + derivable_from: ['SOLIN','FSNTOAC'] + derivation_formula: "(SOLIN-FSNTOAC)/SOLIN" + mpl: + colorbar: + label : "dimensionless" + obs_datasets: + - obs_name: "CERES_EBAF" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "ALBEDOC" + obs_derivable_from: ['solar_mon','toa_sw_clr_c_mon'] + obs_derivation_formula: "toa_sw_clr_c_mon/solar_mon" + RESTOM: category: "TOA energy flux" colormap: "RdBu_r"