Skip to content

Commit

Permalink
Per #1450 and #1451, replacing single CRPS_CLIMO column with CRPSCL a…
Browse files Browse the repository at this point in the history
…nd CRPSCL_EMP which will be needed for #1451.
  • Loading branch information
JohnHalleyGotway committed Feb 12, 2021
1 parent 9504ead commit 16e6aaf
Show file tree
Hide file tree
Showing 13 changed files with 72 additions and 53 deletions.
2 changes: 1 addition & 1 deletion met/data/table_files/met_header_columns_V10.0.txt
Expand Up @@ -17,7 +17,7 @@ V10.0 : STAT : PJC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID
V10.0 : STAT : PRC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL (N_THRESH) THRESH_[0-9]* PODY_[0-9]* POFD_[0-9]*
V10.0 : STAT : PSTD : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL (N_THRESH) BASER BASER_NCL BASER_NCU RELIABILITY RESOLUTION UNCERTAINTY ROC_AUC BRIER BRIER_NCL BRIER_NCU BRIERCL BRIERCL_NCL BRIERCL_NCU BSS BSS_SMPL THRESH_[0-9]*
V10.0 : STAT : ECLV : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL BASER VALUE_BASER (N_PTS) CL_[0-9]* VALUE_[0-9]*
V10.0 : STAT : ECNT : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_ENS CRPS CRPSS IGN ME RMSE SPREAD ME_OERR RMSE_OERR SPREAD_OERR SPREAD_PLUS_OERR CRPS_CLIMO CRPS_EMP CRPSS_EMP
V10.0 : STAT : ECNT : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_ENS CRPS CRPSS IGN ME RMSE SPREAD ME_OERR RMSE_OERR SPREAD_OERR SPREAD_PLUS_OERR CRPSCL CRPS_EMP CRPSCL_EMP CRPSS_EMP
V10.0 : STAT : RPS : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_PROB RPS_REL RPS_RES RPS_UNC RPS RPSS RPSS_SMPL RPS_COMP
V10.0 : STAT : RHIST : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL (N_RANK) RANK_[0-9]*
V10.0 : STAT : PHIST : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL BIN_SIZE (N_BIN) BIN_[0-9]*
Expand Down
3 changes: 2 additions & 1 deletion met/src/basic/vx_util/stat_column_defs.h
Expand Up @@ -261,7 +261,8 @@ static const char * ecnt_columns [] = {
"CRPSS", "IGN", "ME",
"RMSE", "SPREAD", "ME_OERR",
"RMSE_OERR", "SPREAD_OERR", "SPREAD_PLUS_OERR",
"CRPS_CLIMO", "CRPS_EMP", "CRPSS_EMP"
"CRPSCL", "CRPS_EMP", "CRPSCL_EMP",
"CRPSS_EMP"
};

static const char * rps_columns [] = {
Expand Down
12 changes: 8 additions & 4 deletions met/src/libcode/vx_stat_out/stat_columns.cc
Expand Up @@ -3663,7 +3663,8 @@ void write_ecnt_cols(const ECNTInfo &ecnt_info,
// CRPSS, IGN, ME,
// RMSE, SPREAD, ME_OERR,
// RMSE_OERR, SPREAD_OERR, SPREAD_PLUS_OERR,
// CRPS_CLIMO, CRPS_EMP, CRPSS_EMP
// CRPSCL, CRPS_EMP, CRPSCL_EMP,
// CRPSS_EMP
//
at.set_entry(r, c+0, // Total Number of Pairs
ecnt_info.n_pair);
Expand Down Expand Up @@ -3701,13 +3702,16 @@ void write_ecnt_cols(const ECNTInfo &ecnt_info,
at.set_entry(r, c+11, // Mean of unperturbed spread plus observation error
ecnt_info.spread_plus_oerr);

at.set_entry(r, c+12, // Climatological CRPS
ecnt_info.crps_climo);
at.set_entry(r, c+12, // Gaussian climatological CRPS
ecnt_info.crpscl_gaus);

at.set_entry(r, c+13, // Empirical ensemble CRPS
ecnt_info.crps_emp);

at.set_entry(r, c+14, // Empirical CRPSS
at.set_entry(r, c+14, // Empirical climatological CRPS
ecnt_info.crpscl_emp);

at.set_entry(r, c+15, // Empirical CRPSS
ecnt_info.crpss_emp);

return;
Expand Down
13 changes: 8 additions & 5 deletions met/src/libcode/vx_statistics/compute_stats.cc
Expand Up @@ -1309,15 +1309,18 @@ void compute_ecnt_mean(const ECNTInfo *ecnt_info, int n,
for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crps_emp);
ecnt_mean.crps_emp = na.mean();

for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crps_gaus);
ecnt_mean.crps_gaus = na.mean();

for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crps_climo);
ecnt_mean.crps_climo = na.mean();
for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crpscl_emp);
ecnt_mean.crpscl_emp = na.mean();

for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crpss_emp);
ecnt_mean.crpss_emp = na.mean();

for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crps_gaus);
ecnt_mean.crps_gaus = na.mean();

for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crpscl_gaus);
ecnt_mean.crpscl_gaus = na.mean();

for(i=0,na.erase(); i<n; i++) na.add(ecnt_info[i].crpss_gaus);
ecnt_mean.crpss_gaus = na.mean();

Expand Down
29 changes: 15 additions & 14 deletions met/src/libcode/vx_statistics/ens_stats.cc
Expand Up @@ -176,9 +176,9 @@ void ECNTInfo::init_from_scratch() {
void ECNTInfo::clear() {

othresh.clear();
n_ens = n_pair = 0;
crps_emp = crps_gaus = crps_climo = bad_data_double;
crpss_emp = crpss_gaus = bad_data_double;
n_ens = n_pair = 0;
crps_emp = crpscl_emp = crpss_emp = bad_data_double;
crps_gaus = crpscl_gaus = crpss_gaus = bad_data_double;
ign = bad_data_double;
me = rmse = spread = bad_data_double;
me_oerr = rmse_oerr = spread_oerr = bad_data_double;
Expand All @@ -197,13 +197,14 @@ void ECNTInfo::assign(const ECNTInfo &c) {
n_pair = c.n_pair;

crps_emp = c.crps_emp;
crps_gaus = c.crps_gaus;
crps_climo = c.crps_climo;
crpscl_emp = c.crpscl_emp;
crpss_emp = c.crpss_emp;

crps_gaus = c.crps_gaus;
crpscl_gaus = c.crpscl_gaus;
crpss_gaus = c.crpss_gaus;

ign = c.ign;

me = c.me;
rmse = c.rmse;
spread = c.spread;
Expand Down Expand Up @@ -262,16 +263,16 @@ void ECNTInfo::set(const PairDataEnsemble &pd) {
oobar += w * pd.o_na[i] * pd.o_na[i];
fobar += w * pd.cmn_na[i] * pd.o_na[i];
}
crps_climo = ffbar + oobar - 2.0*fobar;

// TODO: MET #1451 correct this computation
crpscl_emp = ffbar + oobar - 2.0*fobar;
crpscl_gaus = ffbar + oobar - 2.0*fobar;

// Compute CRPS skill scores
if(is_eq(crps_climo, 0.0)) {
crpss_emp = crpss_gaus = bad_data_double;
}
else {
crpss_emp = (crps_climo - crps_emp) /crps_climo;
crpss_gaus = (crps_climo - crps_gaus)/crps_climo;
}
crpss_emp = (is_eq(crpscl_emp, 0.0) ? bad_data_double :
(crpscl_emp - crps_emp) /crpscl_emp);
crpss_gaus = (is_eq(crpscl_gaus, 0.0) ? bad_data_double :
(crpscl_gaus - crps_gaus) /crpscl_gaus);
}

// Compute the average IGN value
Expand Down
4 changes: 2 additions & 2 deletions met/src/libcode/vx_statistics/ens_stats.h
Expand Up @@ -76,8 +76,8 @@ class ECNTInfo {
// Number of ensemble members and pairs
int n_ens, n_pair;

double crps_emp, crps_gaus, crps_climo;
double crpss_emp, crpss_gaus;
double crps_emp, crpscl_emp, crpss_emp;
double crps_gaus, crpscl_gaus, crpss_gaus;
double ign, me, rmse, spread;
double me_oerr, rmse_oerr, spread_oerr;
double spread_plus_oerr;
Expand Down
8 changes: 6 additions & 2 deletions met/src/libcode/vx_statistics/pair_data_ensemble.cc
Expand Up @@ -128,9 +128,11 @@ void PairDataEnsemble::clear() {
ssvar_bin_size = bad_data_double;
phist_bin_size = bad_data_double;

crps_climo = bad_data_double;
crpscl_emp = bad_data_double;
crpss_emp = bad_data_double;
crpscl_gaus = bad_data_double;
crpss_gaus = bad_data_double;

me = bad_data_double;
rmse = bad_data_double;
me_oerr = bad_data_double;
Expand Down Expand Up @@ -241,9 +243,11 @@ void PairDataEnsemble::assign(const PairDataEnsemble &pd) {
ssvar_bin_size = pd.ssvar_bin_size;
phist_bin_size = pd.phist_bin_size;

crps_climo = pd.crps_climo;
crpscl_emp = pd.crpscl_emp;
crpss_emp = pd.crpss_emp;
crpscl_gaus = pd.crpscl_gaus;
crpss_gaus = pd.crpss_gaus;

me = pd.me;
rmse = pd.rmse;
me_oerr = pd.me_oerr;
Expand Down
4 changes: 3 additions & 1 deletion met/src/libcode/vx_statistics/pair_data_ensemble.h
Expand Up @@ -110,9 +110,11 @@ class PairDataEnsemble : public PairBase {
double ssvar_bin_size; // Variance bin size for spread/skill
SSVARInfo *ssvar_bins; // Ensemble spread/skill bin information [n_ssvar_bin]

double crps_climo; // Climatological CRPS score
double crpscl_emp; // Empirical climatological CRPS score
double crpss_emp; // Empirical CRPS skill score
double crpscl_gaus; // Guassian climatological CRPS score
double crpss_gaus; // Guassian CRPS skill score

double me; // ME for ensemble mean
double rmse; // RMSE for ensemble mean
double me_oerr; // ME for mean of perturbed members
Expand Down
34 changes: 18 additions & 16 deletions met/src/tools/core/stat_analysis/aggr_stat_line.cc
Expand Up @@ -2514,7 +2514,7 @@ void aggr_ecnt_lines(LineDataFile &f, STATAnalysisJob &job,
AggrENSInfo aggr;
ECNTData cur;
ConcatString key;
double crps_emp_fcst, crps_gaus_fcst, crps_climo, v;
double crps_emp, crpscl_emp, crps_gaus, crpscl_gaus, v;
map<ConcatString, AggrENSInfo>::iterator it;

//
Expand Down Expand Up @@ -2553,7 +2553,8 @@ void aggr_ecnt_lines(LineDataFile &f, STATAnalysisJob &job,
//
if(m.count(key) == 0) {
aggr.ens_pd.clear();
aggr.crps_climo_na.clear();
aggr.crpscl_emp_na.clear();
aggr.crpscl_gaus_na.clear();
aggr.hdr.clear();
m[key] = aggr;
}
Expand All @@ -2572,13 +2573,14 @@ void aggr_ecnt_lines(LineDataFile &f, STATAnalysisJob &job,
// Store the current statistics and weight (TOTAL column)
//
m[key].ens_pd.crps_emp_na.add(cur.crps_emp);
m[key].crpscl_emp_na.add(cur.crpscl_emp);
m[key].ens_pd.crps_gaus_na.add(cur.crps_gaus);
m[key].crpscl_gaus_na.add(cur.crpscl_gaus);
m[key].ens_pd.ign_na.add(cur.ign);
m[key].ens_pd.var_na.add(square(cur.spread));
m[key].ens_pd.var_oerr_na.add(square(cur.spread_oerr));
m[key].ens_pd.var_plus_oerr_na.add(square(cur.spread_plus_oerr));
m[key].ens_pd.wgt_na.add(cur.total);
m[key].crps_climo_na.add(cur.crps_climo);

//
// Store the summary statistics
Expand Down Expand Up @@ -2617,20 +2619,20 @@ void aggr_ecnt_lines(LineDataFile &f, STATAnalysisJob &job,
v = it->second.mse_oerr_na.wmean(it->second.ens_pd.wgt_na);
it->second.ens_pd.rmse_oerr = (is_bad_data(v) ? bad_data_double : sqrt(v));

crps_emp_fcst = it->second.ens_pd.crps_emp_na.wmean(it->second.ens_pd.wgt_na);
crps_gaus_fcst = it->second.ens_pd.crps_gaus_na.wmean(it->second.ens_pd.wgt_na);
crps_climo = it->second.crps_climo_na.wmean(it->second.ens_pd.wgt_na);
crps_emp = it->second.ens_pd.crps_emp_na.wmean(it->second.ens_pd.wgt_na);
crpscl_emp = it->second.crpscl_emp_na.wmean(it->second.ens_pd.wgt_na);
crps_gaus = it->second.ens_pd.crps_gaus_na.wmean(it->second.ens_pd.wgt_na);
crpscl_gaus = it->second.crpscl_gaus_na.wmean(it->second.ens_pd.wgt_na);

// Compute aggregated empirical and Gaussian CRPSS
if(!is_bad_data(crps_emp_fcst) && !is_bad_data(crps_gaus_fcst) &&
!is_bad_data(crps_climo) && !is_eq(crps_climo, 0.0)) {
it->second.ens_pd.crpss_emp = (crps_climo - crps_emp_fcst)/crps_climo;
it->second.ens_pd.crpss_gaus = (crps_climo - crps_gaus_fcst)/crps_climo;
}
else {
it->second.ens_pd.crpss_emp = bad_data_double;
it->second.ens_pd.crpss_gaus = bad_data_double;
}
// Compute aggregated empirical CRPSS
it->second.ens_pd.crpss_emp =
(is_bad_data(crps_emp) || is_bad_data(crpscl_emp) && is_eq(crpscl_emp, 0.0) ?
bad_data_double : (crpscl_emp - crps_emp)/crpscl_emp);

// Compute aggregated Gaussian CRPSS
it->second.ens_pd.crpss_emp =
(is_bad_data(crps_gaus) || is_bad_data(crpscl_gaus) && is_eq(crpscl_gaus, 0.0) ?
bad_data_double : (crpscl_gaus - crps_gaus)/crpscl_gaus);

} // end for it

Expand Down
2 changes: 1 addition & 1 deletion met/src/tools/core/stat_analysis/aggr_stat_line.h
Expand Up @@ -151,7 +151,7 @@ struct AggrISCInfo {
struct AggrENSInfo {
StatHdrInfo hdr;
PairDataEnsemble ens_pd;
NumArray crps_climo_na;
NumArray crpscl_emp_na, crpscl_gaus_na;
NumArray me_na, mse_na, me_oerr_na, mse_oerr_na;
};

Expand Down
8 changes: 5 additions & 3 deletions met/src/tools/core/stat_analysis/parse_stat_line.cc
Expand Up @@ -348,10 +348,12 @@ void parse_ecnt_line(STATLine &l, ECNTData &e_data) {
e_data.n_ens = atof(l.get_item("N_ENS"));

e_data.crps_emp = atof(l.get_item("CRPS_EMP"));
e_data.crps_gaus = atof(l.get_item("CRPS"));
e_data.crps_climo = atof(l.get_item("CRPS_CLIMO"));
e_data.crpscl_emp = atof(l.get_item("CRPSCL_EMP"));
e_data.crpss_emp = atof(l.get_item("CRPSS_EMP"));
e_data.crpss_gaus = atof(l.get_item("CRPSS"));

e_data.crps_gaus = atof(l.get_item("CRPS"));
e_data.crpscl_gaus = atof(l.get_item("CRPSCL"));
e_data.crpss_gaus = atof(l.get_item("CRPSS"));

e_data.ign = atof(l.get_item("IGN"));
e_data.me = atof(l.get_item("ME"));
Expand Down
4 changes: 2 additions & 2 deletions met/src/tools/core/stat_analysis/parse_stat_line.h
Expand Up @@ -62,8 +62,8 @@ struct MPRData {
// Ensemble continuous statistics (ECNT) data structure
struct ECNTData {
int total, n_ens;
double crps_emp, crps_gaus;
double crps_climo, crpss_emp, crpss_gaus;
double crps_emp, crpscl_emp, crpss_emp;
double crps_gaus, crpscl_gaus, crpss_gaus;
double ign, me, rmse, spread;
double me_oerr, rmse_oerr, spread_oerr;
double spread_plus_oerr;
Expand Down
2 changes: 1 addition & 1 deletion test/hdr/met_10_0.hdr
Expand Up @@ -17,7 +17,7 @@ PJC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_L
PRC : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_THRESH _VAR_
PSTD : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_THRESH BASER BASER_NCL BASER_NCU RELIABILITY RESOLUTION UNCERTAINTY ROC_AUC BRIER BRIER_NCL BRIER_NCU BRIERCL BRIERCL_NCL BRIERCL_NCU BSS BSS_SMPL _VAR_
ECLV : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL BASE N_PTS _VAR_
ECNT : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_ENS CRPS CRPSS IGN ME RMSE SPREAD ME_OERR RMSE_OERR SPREAD_OERR SPREAD_PLUS_OERR CRPS_CLIMO CRPS_EMP CRPSS_EMP
ECNT : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_ENS CRPS CRPSS IGN ME RMSE SPREAD ME_OERR RMSE_OERR SPREAD_OERR SPREAD_PLUS_OERR CRPSCL CRPS_EMP CRPSCL_EMP CRPSS_EMP
RPS : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL N_PROB RPS_REL RPS_RES RPS_UNC RPS RPSS RPSS_SMPL RPS_COMP
RHIST : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL CRPS IGN N_RANK CRPSS SPREAD _VAR_
PHIST : VERSION MODEL DESC FCST_LEAD FCST_VALID_BEG FCST_VALID_END OBS_LEAD OBS_VALID_BEG OBS_VALID_END FCST_VAR FCST_UNITS FCST_LEV OBS_VAR OBS_UNITS OBS_LEV OBTYPE VX_MASK INTERP_MTHD INTERP_PNTS FCST_THRESH OBS_THRESH COV_THRESH ALPHA LINE_TYPE TOTAL BIN_SIZE N_BIN _VAR_
Expand Down

0 comments on commit 16e6aaf

Please sign in to comment.