diff --git a/lib/adf_dataset.py b/lib/adf_dataset.py index 9b87ecc2f..6ac659ba5 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" @@ -68,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} @@ -76,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 = {} @@ -267,7 +273,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 +364,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 +396,96 @@ 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: + 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). + + Returns a DataArray (named `variablename`) or None if no usable obs formula + is provided or its inputs are not all present in the file. + """ + # 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): + 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 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 + 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 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 + 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 obs_derivation_formula " + "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')) @@ -420,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 7b8803aaf..498c9e0b3 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: @@ -24,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. +# obs_derivable_from -> If not present in the available output files, the variable can be derived from +# other observational variables that are present +# obs_derivation_formula -> If derivable_from is specified then an accompanying derivation_fromula_obs must +# also be specified # # VECTORS: # @@ -51,12 +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 -# -# # 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 @@ -179,9 +179,13 @@ 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" + - obs_name: "ERA5_1deg" + obs_file: "CAPE_ERA5_monthly_climo_1degree_197901-202112.nc" + obs_var_name: "CAPE" CMFMC_DP: category: "Deep Convection" @@ -1021,92 +1025,92 @@ 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" + - 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" 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" - obs_var_name: "CLDTOT" - category: "Clouds" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDTOT" pct_diff_contour_levels: [-100,-75,-50,-40,-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" 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" - obs_var_name: "CLDLOW" - category: "Clouds" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDLOW" pct_diff_contour_levels: [-100,-75,-50,-40,-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" 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" - obs_var_name: "CLDHGH" - category: "Clouds" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDHGH" pct_diff_contour_levels: [-100,-75,-50,-40,-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" 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" - obs_var_name: "CLDMED" - category: "Clouds" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "CLDMED" pct_diff_contour_levels: [-100,-75,-50,-40,-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" 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" @@ -1114,42 +1118,46 @@ CONCLD: category: "Clouds" TGCLDLWP: + category: "Clouds" colormap: "Blues" 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: label : "g m$^{-2}$" - category: "Clouds" - obs_file: "TGCLDLWP_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "TGCLDLWP" - obs_scale_factor: 1000 - obs_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_datasets: + - obs_name: "ERA5" + 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" diff_contour_range: [-50, 50, 5] - scale_factor: 1000 - add_offset: 0 new_unit: "g m$^{-2}$" mpl: colorbar: label : "g m$^{-2}$" - category: "Clouds" - obs_file: "TGCLDIWP_ERA5_monthly_climo_197901-202112.nc" - obs_name: "ERA5" - obs_var_name: "TGCLDIWP" - obs_scale_factor: 1000 - obs_add_offset: 0 + 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" @@ -1177,82 +1185,81 @@ 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: 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" + derivation_formula: "(PRECC + PRECL) * 86400000" + 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" @@ -1265,90 +1272,100 @@ 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" + - 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" 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_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" + - 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" 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_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" + - 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" 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] - scale_factor: 1 - add_offset: 0 new_unit: "K" + obs_datasets: + - 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" diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" mpl: colorbar: label : "K" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "TS" - category: "Surface variables" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "TS" pct_diff_contour_levels: [-100,-75,-50,-40,-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" diff_contour_range: [-10, 10, 1] - scale_factor: 1 - add_offset: 0 new_unit: "K" mpl: colorbar: label : "K" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "TS" - category: "Surface variables" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "TS" 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" @@ -1364,20 +1381,25 @@ 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 - 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_datasets: + - 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 - 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" @@ -1395,105 +1417,126 @@ 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" #+++++++++++++++++ # Category: State #+++++++++++++++++ TMQ: + category: "State" colormap: "Oranges" 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" - obs_var_name: "PREH2O" - category: "State" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "PREH2O" pct_diff_contour_levels: [-100,-75,-50,-40,-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" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "Fraction" mpl: colorbar: label : "Fraction" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "RELHUM" - category: "State" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "RELHUM" + - 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" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "ms$^{-1}$" 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" + - 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" diff_contour_range: [-15, 15, 2] - scale_factor: 1 - add_offset: 0 new_unit: "ms$^{-1}$" 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" + - 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" 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" + - 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" 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" + - 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" 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" + - 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" @@ -1502,7 +1545,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] @@ -1544,91 +1586,119 @@ 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" 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" SWCF: + category: "TOA energy flux" colormap: "Blues" 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: 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_scale_factor: 1 - obs_add_offset: 0 - category: "TOA energy flux" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "toa_cre_sw_mon" pct_diff_contour_levels: [-100,-75,-50,-40,-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" diff_contour_range: [-15, 15, 1] - scale_factor: 1 - add_offset: 0 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" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "toa_cre_lw_mon" pct_diff_contour_levels: [-100,-75,-50,-40,-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" diff_contour_range: [-15, 15, 1] - scale_factor: 1 - add_offset: 0 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: + category: "TOA energy flux" colormap: "Blues" 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: 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" + obs_datasets: + - obs_name: "CERES_EBAF_Ed4.1" + obs_file: "CERES_EBAF_Ed4.1_2001-2020.nc" + obs_var_name: "fsnt" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1652,34 +1722,32 @@ 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: 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" FLNTC: + category: "TOA energy flux" colormap: "Oranges" 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: 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" + 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" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1698,56 +1766,53 @@ FSDSC: pct_diff_colormap: "PuOr_r" FSNS: + category: "Sfc energy flux" colormap: "Blues" 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: 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" + 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" pct_diff_contour_levels: [-100,-75,-50,-40,-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" diff_contour_range: [-24, 24, 2] - scale_factor: 1 - add_offset: 0 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" + 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" pct_diff_contour_levels: [-100,-75,-50,-40,-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" diff_contour_range: [-20, 20, 2] - scale_factor: 1 - add_offset: 0 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" + 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" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1767,20 +1832,19 @@ SHFLX: pct_diff_colormap: "PuOr_r" LHFLX: + category: "Sfc energy flux" colormap: "Blues" 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: label : "Wm$^{-2}$" - obs_file: "ERAI_all_climo.nc" - obs_name: "ERAI" - obs_var_name: "LHFLX" - category: "Sfc energy flux" + obs_datasets: + - obs_name: "ERAI" + obs_file: "ERAI_all_climo.nc" + obs_var_name: "LHFLX" pct_diff_contour_levels: [-100,-75,-50,-40,-30,-20,-10,-8,-6,-4,-2,0,2,4,6,8,10,20,30,40,50,75,100] pct_diff_colormap: "PuOr_r" @@ -1898,12 +1962,11 @@ 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" - 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: @@ -1911,52 +1974,48 @@ 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" - 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: + category: "COSP" colormap: "cividis" 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" - obs_var_name: "CLDMED_CAL" - category: "COSP" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLDMED_CAL" CLDLOW_CAL: colormap: "cividis" 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" - 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: + category: "COSP" colormap: "cividis" 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" - obs_var_name: "CLD_CAL" - category: "COSP" + obs_datasets: + - obs_name: "CALIPSO" + obs_file: "CALIPSO_GOCCP_3.1.2_climo_200606-202012.nc" + obs_var_name: "CLD_CAL" #+++++++++++++++++ @@ -1966,8 +2025,6 @@ CLD_CAL: H2O: colormap: "PuOr_r" diff_colormap: "BrBG" - scale_factor: 1 - add_offset: 0 new_unit: "mol mol$^{-1}$" mpl: colorbar: @@ -1991,81 +2048,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 aec6997c0..960e9b11b 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,12 +48,11 @@ 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" - 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" @@ -70,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" @@ -86,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" @@ -113,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" @@ -128,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 b138e31e7..000000000 --- a/lib/adf_variable_defaults_era5-1deg.yaml +++ /dev/null @@ -1,2595 +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: 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 -#+++++++++++++++++ - -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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1000 - add_offset: 0 - 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_var_name: "TGCLDLWP" - obs_scale_factor: 1000 - obs_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" - -TGCLDIWP: - colormap: "Blues" - 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: - label : "g m$^{-2}$" - 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 - pct_diff_contour_levels: [-100,-75,-50,-40,-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'] - pct_diff_contour_levels: [-100,-75,-50,-40,-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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - 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'] - pct_diff_contour_levels: [-100,-75,-50,-40,-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] - scale_factor: 1 - add_offset: 0 - 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" - 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" - -LWCF: - colormap: "Oranges" - 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: - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1 - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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] - scale_factor: 1. - add_offset: 0 - 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" - scale_factor: 1 - add_offset: 0 - 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 ae0f5cc11..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_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_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_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_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_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_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_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_derivable_from: ['BURDENSEASALT'] + obs_derivation_formula: "BURDENSEASALT * 1e6" cb_SO2: category: "Aerosols" diff --git a/lib/plotting_functions.py b/lib/plotting_functions.py index c54cfdc0f..4d3ab777a 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; 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}" ax2.set_title(base_title, loc='left', fontsize=6) #fontsize=tiFontSize else: @@ -1021,8 +1024,14 @@ 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; 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}" ax[1].set_title(base_title, loc='left', fontsize=tiFontSize) else: @@ -1268,8 +1277,14 @@ 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; 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}" ax[1].set_title(base_title, loc='left', fontsize=tiFontSize) else: @@ -1466,8 +1481,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; 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}" else: base_title = r"$\mathbf{Baseline}:$"+f"{base_nickname}\nyears: {baseline_climo_yrs[0]}-{baseline_climo_yrs[-1]}" @@ -1716,8 +1734,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; 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}" else: base_title = r"$\mathbf{Baseline}:$"+f"{base_nickname}\nyears: {baseline_climo_yrs[0]}-{baseline_climo_yrs[-1]}" diff --git a/scripts/plotting/meridional_mean.py b/scripts/plotting/meridional_mean.py index f4e058098..eb26f6c21 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 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: + 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.