def test_compare_single_level(): refdata = xr.open_dataset('GCCData/SpeciesConcTest.nc4') refstr = 'GCC Test Data' devdata = xr.open_dataset('GCHPData/SpeciesConcTest.nc4') devstr = 'GCHP Test Data' pdfname = "TestOutput/NewCompareSingleLevel.pdf" try: bmk.compare_single_level(refdata, refstr, devdata, devstr, pdfname=pdfname) print( "compare_single_level ran successfully, check output PDFs to visually verify" ) except Exception as e: print("compare_single_level failed") raise e if not os.path.exists('CorrectCompareSingleLevel.pdf'): copyfile(pdfname, 'TestOutput/CorrectCompareSingleLevel.pdf')
def compare_data(refdata, devdata): """ Compares data from two different xarray datasets. Args: ----- refdata : xarray Dataset The first Dataset to be compared. devdata : xarray Dataset The Dataset to be compared against refdata. """ # For each variable in refdata, but not non devdata, add an # array of NaN values to refdata. Ditto for devdata. This will # allow us to show that the variable is missing in either # refdata or devdata. [refdata, devdata] = util.add_missing_variables(refdata, devdata) # Get the list of common variable names quiet = not verbose vardict = util.compare_varnames(refdata, devdata, quiet=quiet) varlist_level = vardict["commonvars2D"] + vardict["commonvars3D"] varlist_zonal = vardict["commonvars3D"] # Restrict variables to those containing a given substring if restrict_vars is not None: varlist_level = [v for v in varlist_level if restrict_vars in v] varlist_zonal = [v for v in varlist_zonal if restrict_vars in v] # ================================================================== # Generate the single level comparison plot # ================================================================== if create_single_level_plot: bmk.compare_single_level(refdata, refstr, devdata, devstr, ilev=level_to_plot, varlist=varlist_level, pdfname=pdfname_level, weightsdir=weightsdir, verbose=verbose) # ================================================================== # Generate the zonal mean comparison plot # ================================================================== if create_zonal_mean_plot: bmk.compare_zonal_mean(refdata, refstr, devdata, devstr, varlist=varlist_zonal, pdfname=pdfname_zonal, weightsdir=weightsdir, verbose=verbose) # ================================================================== # Print totals for each quantity # ================================================================== if print_totals_and_diffs: # Header print("{} Ref={} Dev={} {}".format("Variable".ljust(22), refstr.ljust(20), devstr.ljust(20), "Dev-Ref")) # Data for v in varlist_level: refsum = np.sum(refdata[v].values) devsum = np.sum(devdata[v].values) diff = devsum - refsum print("{} : {} | {} | {} ".format(v.ljust(20), str(refsum).ljust(22), str(devsum).ljust(22), diff))
def compare_data(refdata, devdata): ''' Compares data frwom two different xarray datasets. Args: ----- refdata : xarray Dataset The first Dataset to be compared. devdata : xarray Dataset The Dataset to be compared against refdata. Remarks: -------- Uses the global variables defined above to specify plotting options etc. ''' # For each variable in refdata, but not non devdata, add an # array of NaN values to refdata. Ditto for devdata. This will # allow us to show that the variable is missing in either # refdata or devdata. [refdata, devdata] = bmk.add_missing_variables(refdata, devdata) # Get the list of common variable names quiet = not verbose vardict = core.compare_varnames(refdata, devdata, quiet=quiet) varlist_level = vardict['commonvars2D'] + vardict['commonvars3D'] varlist_zonal = vardict['commonvars3D'] # Restrict variables to those containing a given substring if restrict_vars is not None: varlist_level = [v for v in varlist_level if restrict_vars in v] varlist_zonal = [v for v in varlist_zonal if restrict_vars in v] # ================================================================== # Generate the single level comparison plot # ================================================================== if create_single_level_plot: # Create the plot bmk.compare_single_level(refdata, refstr, devdata, devstr, ilev=level_to_plot, varlist=varlist_level, pdfname=pdfname_level, weightsdir=weightsdir, verbose=verbose) # ================================================================== # Generate the zonal mean comparison plot # ================================================================== if create_zonal_mean_plot: bmk.compare_zonal_mean(refdata, refstr, devdata, devstr, varlist=varlist_zonal, pdfname=pdfname_zonal, weightsdir=weightsdir, verbose=verbose) # ================================================================== # Print totals for each quantity # ================================================================== if print_totals_and_diffs: print('{} Ref={} Dev={} {}'.format('Variable'.ljust(22), refstr.ljust(20), devstr.ljust(20), 'Dev-Ref')) for v in varlist_level: refsum = np.sum(refdata[v].values) devsum = np.sum(devdata[v].values) diff = devsum - refsum print('{} : {} | {} | {} '.format(v.ljust(20), str(refsum).ljust(22), str(devsum).ljust(22), diff))
def compare_data(config, data): """ Compares data from two different xarray datasets. Args: data : dict Contains Ref and Dev data as xarray Dataset fields. """ # Get xarray datasets from the data object refdata = data["ref"] devdata = data["dev"] # For each variable in refdata, but not non devdata, add an # array of NaN values to refdata. Ditto for devdata. This will # allow us to show that the variable is missing in either # refdata or devdata. [refdata, devdata] = util.add_missing_variables(refdata, devdata) # Get the list of common variable names verbose = config["options"]["verbose"] quiet = not verbose vardict = util.compare_varnames(refdata, devdata, quiet=quiet) varlist_level = vardict["commonvars2D"] + vardict["commonvars3D"] varlist_zonal = vardict["commonvars3D"] # Restrict variables to those containing a given substring restrict_vars = config["options"]["restrict_vars"] if len(restrict_vars) > 0: varlist_level = [v for v in varlist_level if v in restrict_vars] varlist_zonal = [v for v in varlist_zonal if v in restrict_vars] # ================================================================== # Generate the single level comparison plot # ================================================================== if config["options"]["level_plot"]["create_plot"]: print('... Creating single-level plots') pdfname = os.path.join(config["paths"]["plots_dir"], config["options"]["level_plot"]["pdfname"]) bmk.compare_single_level( refdata, config["data"]["ref"]["label"], devdata, config["data"]["dev"]["label"], ilev=config["options"]["level_plot"]["level_to_plot"], varlist=varlist_level, pdfname=pdfname, weightsdir=config["paths"]["weights_dir"], verbose=verbose) # ================================================================== # Generate the zonal mean comparison plot # ================================================================== if config["options"]["zonal_mean"]["create_plot"]: print('... Creating zonal mean plots') pdfname = os.path.join(config["paths"]["plots_dir"], config["options"]["zonal_mean"]["pdfname"]) bmk.compare_zonal_mean(refdata, config["data"]["ref"]["label"], devdata, config["data"]["dev"]["label"], varlist=varlist_zonal, pdfname=pdfname, weightsdir=config["paths"]["weights_dir"], verbose=verbose) # ================================================================== # Print totals for each quantity # ================================================================== if config["options"]["totals_and_diffs"]["create_table"] or \ config["options"]["totals_and_diffs"]["print_to_screen"]: print('... Printing totals and differences') print_totals_and_diffs(config, refdata, devdata, varlist_level)