Пример #1
0
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')
Пример #2
0
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))
Пример #3
0
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))
Пример #4
0
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)