def create_metrics(ref, test, ref_regrid, test_regrid, diff): """Creates the mean, max, min, rmse, corr in a dictionary""" metrics_dict = {} metrics_dict['ref'] = { 'min': min_cdms(ref), 'max': max_cdms(ref), 'mean': mean(ref) } metrics_dict['test'] = { 'min': min_cdms(test), 'max': max_cdms(test), 'mean': mean(test) } metrics_dict['diff'] = { 'min': min_cdms(diff), 'max': max_cdms(diff), 'mean': mean(diff) } metrics_dict['misc'] = { 'rmse': rmse(test_regrid, ref_regrid), 'corr': corr(test_regrid, ref_regrid) } return metrics_dict
def create_metrics(ref, test, ref_regrid, test_regrid, diff): """Creates the mean, max, min, rmse, corr in a dictionary""" metrics_dict = {} metrics_dict['ref'] = { 'min': float(min_cdms(ref)), 'max': float(max_cdms(ref)), 'mean': float(mean(ref)) } metrics_dict['ref_regrid'] = { 'min': float(min_cdms(ref_regrid)), 'max': float(max_cdms(ref_regrid)), 'mean': float(mean(ref_regrid)), 'std': float(std(ref_regrid)) } metrics_dict['test'] = { 'min': float(min_cdms(test)), 'max': float(max_cdms(test)), 'mean': float(mean(test)) } metrics_dict['test_regrid'] = { 'min': float(min_cdms(test_regrid)), 'max': float(max_cdms(test_regrid)), 'mean': float(mean(test_regrid)), 'std': float(std(test_regrid)) } metrics_dict['diff'] = { 'min': float(min_cdms(diff)), 'max': float(max_cdms(diff)), 'mean': float(mean(diff)) } metrics_dict['misc'] = { 'rmse': float(rmse(test_regrid, ref_regrid)), 'corr': float(corr(test_regrid, ref_regrid)) } return metrics_dict
def run_diag(parameter): variables = parameter.variables seasons = parameter.seasons ref_name = getattr(parameter, 'ref_name', '') regions = parameter.regions test_data = utils.dataset.Dataset(parameter, test=True) ref_data = utils.dataset.Dataset(parameter, ref=True) for season in seasons: # Get the name of the data, appended with the years averaged. parameter.test_name_yrs = utils.general.get_name_and_yrs(parameter, test_data, season) parameter.ref_name_yrs = utils.general.get_name_and_yrs(parameter, ref_data, season) # Get land/ocean fraction for masking. try: land_frac = test_data.get_climo_variable('LANDFRAC', season) ocean_frac = test_data.get_climo_variable('OCNFRAC', season) except: mask_path = os.path.join(acme_diags.INSTALL_PATH, 'acme_ne30_ocean_land_mask.nc') with cdms2.open(mask_path) as f: land_frac = f('LANDFRAC') ocean_frac = f('OCNFRAC') for var in variables: print('Variable: {}'.format(var)) parameter.var_id = var mv1 = test_data.get_climo_variable(var, season) mv2 = ref_data.get_climo_variable(var, season) parameter.viewer_descr[var] = mv1.long_name if hasattr( mv1, 'long_name') else 'No long_name attr in test data.' for region in regions: print("Selected region: {}".format(region)) mv1_domain = utils.general.select_region(region, mv1, land_frac, ocean_frac, parameter) mv2_domain = utils.general.select_region(region, mv2, land_frac, ocean_frac, parameter) parameter.output_file = '-'.join( [ref_name, var, season, region]) parameter.main_title = str(' '.join([var, season, region])) mv1_domain_mean = mean(mv1_domain) mv2_domain_mean = mean(mv2_domain) diff = mv1_domain_mean - mv2_domain_mean mv1_domain_mean.id = var mv2_domain_mean.id = var diff.id = var parameter.backend = 'mpl' # For now, there's no vcs support for this set. plot(parameter.current_set, mv2_domain_mean, mv1_domain_mean, diff, {}, parameter) utils.general.save_ncfiles(parameter.current_set, mv1_domain, mv2_domain, diff, parameter) return parameter
def create_metrics(ref, test, ref_regrid, test_regrid, diff): """Creates the mean, max, min, rmse, corr in a dictionary""" metrics_dict = {} metrics_dict["ref"] = { "min": min_cdms(ref), "max": max_cdms(ref), "mean": mean(ref), } metrics_dict["test"] = { "min": min_cdms(test), "max": max_cdms(test), "mean": mean(test), } metrics_dict["diff"] = { "min": min_cdms(diff), "max": max_cdms(diff), "mean": mean(diff), } metrics_dict["misc"] = { "rmse": rmse(test_regrid, ref_regrid), "corr": corr(test_regrid, ref_regrid), } return metrics_dict
def create_metrics(ref, test, ref_regrid, test_regrid, diff): """Creates the mean, max, min, rmse, corr in a dictionary""" orig_bounds = cdms2.getAutoBounds() cdms2.setAutoBounds(1) lev = ref.getLevel() if lev is not None: lev.setBounds(None) lev = test.getLevel() if lev is not None: lev.setBounds(None) lev = test_regrid.getLevel() if lev is not None: lev.setBounds(None) lev = ref_regrid.getLevel() if lev is not None: lev.setBounds(None) lev = diff.getLevel() if lev is not None: lev.setBounds(None) cdms2.setAutoBounds(orig_bounds) metrics_dict = {} metrics_dict['ref'] = { 'min': min_cdms(ref), 'max': max_cdms(ref), #'mean': numpy.nan #mean(ref, axis='yz') 'mean': mean(ref, axis='yz') } metrics_dict['test'] = { 'min': min_cdms(test), 'max': max_cdms(test), #'mean': numpy.nan #mean(test, axis='yz') 'mean': mean(test, axis='yz') } metrics_dict['diff'] = { 'min': min_cdms(diff), 'max': max_cdms(diff), #'mean': numpy.nan #mean(diff, axis='yz') 'mean': mean(diff, axis='yz') } metrics_dict['misc'] = { 'rmse': rmse(test_regrid, ref_regrid, axis='yz'), 'corr': corr(test_regrid, ref_regrid, axis='yz') } return metrics_dict
def create_metrics(ref, test, ref_regrid, test_regrid, diff): """ Creates the mean, max, min, rmse, corr in a dictionary. """ orig_bounds = cdms2.getAutoBounds() cdms2.setAutoBounds(1) lev = ref.getLevel() if lev is not None: lev.setBounds(None) lev = test.getLevel() if lev is not None: lev.setBounds(None) lev = test_regrid.getLevel() if lev is not None: lev.setBounds(None) lev = ref_regrid.getLevel() if lev is not None: lev.setBounds(None) lev = diff.getLevel() if lev is not None: lev.setBounds(None) cdms2.setAutoBounds(orig_bounds) metrics_dict = {} metrics_dict["ref"] = { "min": min_cdms(ref), "max": max_cdms(ref), "mean": mean(ref, axis="xz"), } metrics_dict["test"] = { "min": min_cdms(test), "max": max_cdms(test), "mean": mean(test, axis="xz"), } metrics_dict["diff"] = { "min": min_cdms(diff), "max": max_cdms(diff), "mean": mean(diff, axis="xz"), } metrics_dict["misc"] = { "rmse": rmse(test_regrid, ref_regrid, axis="xz"), "corr": corr(test_regrid, ref_regrid, axis="xz"), } return metrics_dict
def create_single_metrics_dict(values): d = { 'min': float(min_cdms(values)), 'max': float(max_cdms(values)), 'mean': float(mean(values)), 'std': float(std(values)) } return d
def create_single_metrics_dict(values): d = { "min": float(min_cdms(values)), "max": float(max_cdms(values)), "mean": float(mean(values)), "std": float(std(values)), } return d
def create_metrics(ref_domain): """ For this plotset, calculate the mean of the reference data and return a dict of that. """ return {'mean': mean(ref_domain)}
def run_diag(parameter): reference_data_path = parameter.reference_data_path test_data_path = parameter.test_data_path variables = parameter.variables seasons = parameter.seasons ref_name = parameter.ref_name regions = parameter.regions for season in seasons: try: filename1 = utils.get_test_filename(parameter, season) filename2 = utils.get_ref_filename(parameter, season) except IOError as e: print(e) # the file for the current parameters wasn't found, move to next parameters continue print('test file: {}'.format(filename1)) print('reference file: {}'.format(filename2)) f_mod = cdms2.open(filename1) f_obs = cdms2.open(filename2) #save land/ocean fraction for masking try: land_frac = f_mod('LANDFRAC') ocean_frac = f_mod('OCNFRAC') except: mask_path = os.path.join(sys.prefix, 'share', 'acme_diags', 'acme_ne30_ocean_land_mask.nc') f0 = cdms2.open(mask_path) land_frac = f0('LANDFRAC') ocean_frac = f0('OCNFRAC') f0.close() for var in variables: print('Variable: {}'.format(var)) parameter.var_id = var mv1 = acme.process_derived_var(var, acme.derived_variables, f_mod, parameter) mv2 = acme.process_derived_var(var, acme.derived_variables, f_obs, parameter) parameter.viewer_descr[var] = mv1.long_name if hasattr( mv1, 'long_name') else 'No long_name attr in test data.' #select region if len(regions) == 0: regions = ['global'] for region in regions: print("Selected region: {}".format(region)) mv1_domain, mv2_domain = utils.select_region( region, mv1, mv2, land_frac, ocean_frac, parameter) parameter.output_file = '-'.join( [ref_name, var, season, region]) parameter.main_title = str(' '.join([var, season, region])) mv1_domain_mean = mean(mv1_domain) mv2_domain_mean = mean(mv2_domain) diff = mv1_domain_mean - mv2_domain_mean mv1_domain_mean.id = var mv2_domain_mean.id = var diff.id = var parameter.backend = 'cartopy' plot(parameter.current_set, mv2_domain_mean, mv1_domain_mean, diff, {}, parameter) # plot(parameter.current_set, mv2_domain, mv1_domain, diff, metrics_dict, parameter) # utils.save_ncfiles(parameter.current_set, mv1_domain, mv2_domain, diff, parameter) f_obs.close() f_mod.close() return parameter