From 5fcae490bbfa69ada9537fddf3d66d87f6148b30 Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Tue, 25 Oct 2022 13:53:33 -0600 Subject: [PATCH 1/5] Per issue #2232, added some new global variables to keep track of unique output variables names. SL ci-skip-all --- src/tools/other/grid_diag/grid_diag.cc | 26 +++++++++++++++++++++++++- src/tools/other/grid_diag/grid_diag.h | 6 ++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/tools/other/grid_diag/grid_diag.cc b/src/tools/other/grid_diag/grid_diag.cc index 96e3be2a94..6faacd595f 100644 --- a/src/tools/other/grid_diag/grid_diag.cc +++ b/src/tools/other/grid_diag/grid_diag.cc @@ -162,6 +162,8 @@ void process_command_line(int argc, char **argv) { conf_info.read_config(default_config_file.c_str(), config_file.c_str()); + cout << "CHECK1" << endl; + // Determine the number of data fields conf_info.set_n_data(); @@ -179,6 +181,8 @@ void process_command_line(int argc, char **argv) { // Process the input data file lists for(int i=0; iregrid(), &data_grid, &data_grid); @@ -443,8 +451,14 @@ void setup_histograms(void) { << "Initializing " << data_info->magic_str_attr() << " histogram with " << n_bins << " bins from " << min << " to " << max << ".\n"; + histograms[i_var_str] = vector(); init_pdf(n_bins, histograms[i_var_str]); + + // Keep track of unique output variable names + if(nc_var_sa.has( data_info->magic_str_attr() )) unique_variable_names = false; + nc_var_sa.add(data_info->magic_str_attr()); + } // for i_var } @@ -529,11 +543,20 @@ void setup_nc_file(void) { VarInfo *data_info = conf_info.data_info[i_var]; + + // This is the section we need to fix SL + + cout << "multiple_data_sources = " << multiple_data_sources << endl; + cout << "unique_variable_names = " << unique_variable_names << endl; + // Set variable NetCDF name ConcatString var_name = data_info->name_attr(); + cout << "Initial var_name = " << var_name << endl; var_name.add("_"); var_name.add(data_info->level_attr()); + cout << "Output var_name = " << var_name << endl; + // Define histogram dimensions NcDim var_dim = add_dim(nc_out, var_name, (long) data_info->n_bins()); @@ -816,6 +839,7 @@ void usage() { void set_data_files(const StringArray & a) { data_files.push_back(a); + if(data_files.size() > 0) multiple_data_sources = true; } //////////////////////////////////////////////////////////////////////// diff --git a/src/tools/other/grid_diag/grid_diag.h b/src/tools/other/grid_diag/grid_diag.h index 18b18d3326..91f6bcc797 100644 --- a/src/tools/other/grid_diag/grid_diag.h +++ b/src/tools/other/grid_diag/grid_diag.h @@ -90,6 +90,12 @@ vector data_var_dims; vector hist_vars; vector joint_hist_vars; +static bool multiple_data_sources = false; +static bool unique_variable_names = true; + +// List of output NetCDF variable names +static StringArray nc_var_sa; + //////////////////////////////////////////////////////////////////////// // // Miscellaneous Variables From 7d22fac784e14f0e94a8ad577c6d19cd3b0369fb Mon Sep 17 00:00:00 2001 From: Seth Linden Date: Wed, 26 Oct 2022 15:37:41 -0600 Subject: [PATCH 2/5] Per issue #2232, modified setup_nc_file to use new flags: multiple_data_sources, unique_variable_names to append VAR# var names if variables are not unique. This fixes the issues of trying to write the same variable name the output file. SL --- src/tools/other/grid_diag/grid_diag.cc | 143 +++++++++++++------------ 1 file changed, 77 insertions(+), 66 deletions(-) diff --git a/src/tools/other/grid_diag/grid_diag.cc b/src/tools/other/grid_diag/grid_diag.cc index 6faacd595f..c87e0ca41b 100644 --- a/src/tools/other/grid_diag/grid_diag.cc +++ b/src/tools/other/grid_diag/grid_diag.cc @@ -20,6 +20,7 @@ // 003 08/20/21 Halley Gotway Bugfix #1886 for integer overflow. // 004 07/06/22 Howard Soh METplus-Internal #19 Rename main to met_main // 005 10/03/22 Prestopnik MET #2227 Remove using namespace std and netCDF from header files +// 006 10/26/22 Linden MET #2232 Refine the Grid-Diag output variable names when specifying two input data sources // //////////////////////////////////////////////////////////////////////// @@ -162,8 +163,6 @@ void process_command_line(int argc, char **argv) { conf_info.read_config(default_config_file.c_str(), config_file.c_str()); - cout << "CHECK1" << endl; - // Determine the number of data fields conf_info.set_n_data(); @@ -181,8 +180,6 @@ void process_command_line(int argc, char **argv) { // Process the input data file lists for(int i=0; iregrid(), &data_grid, &data_grid); @@ -498,70 +491,66 @@ void setup_joint_histograms(void) { //////////////////////////////////////////////////////////////////////// void setup_nc_file(void) { - ConcatString cs, i_var_str; - - // Create NetCDF file - nc_out = open_ncfile(out_file.c_str(), true); - - if(IS_INVALID_NC_P(nc_out)) { + ConcatString cs, i_var_str, j_var_str; + + // Create NetCDF file + nc_out = open_ncfile(out_file.c_str(), true); + + if(IS_INVALID_NC_P(nc_out)) { mlog << Error << "\nsetup_nc_file() -> " - << "trouble opening output NetCDF file " - << out_file << "\n\n"; - exit(1); - } - - // Add global attributes - write_netcdf_global(nc_out, out_file.c_str(), program_name, - NULL, NULL, conf_info.desc.c_str()); - add_att(nc_out, "mask_grid", (conf_info.mask_grid_name.nonempty() ? - (string)conf_info.mask_grid_name : - na_str)); - add_att(nc_out, "mask_poly", (conf_info.mask_poly_name.nonempty() ? - (string)conf_info.mask_poly_name : - na_str)); - - // Add time range information to the global attributes - add_att(nc_out, "init_beg", (string)unix_to_yyyymmdd_hhmmss(init_beg)); - add_att(nc_out, "init_end", (string)unix_to_yyyymmdd_hhmmss(init_end)); - add_att(nc_out, "valid_beg", (string)unix_to_yyyymmdd_hhmmss(valid_beg)); - add_att(nc_out, "valid_end", (string)unix_to_yyyymmdd_hhmmss(valid_end)); - add_att(nc_out, "lead_beg", (string)sec_to_hhmmss(lead_beg)); - add_att(nc_out, "lead_end", (string)sec_to_hhmmss(lead_end)); - - // Write the grid size, mask size, and series length - write_nc_var_int("grid_size", "number of grid points", grid.nxy()); - write_nc_var_int("mask_size", "number of mask points", conf_info.mask_area.count()); - write_nc_var_int("n_series", "length of series", n_series); - - // Compression level - int deflate_level = compress_level; - if(deflate_level < 0) deflate_level = conf_info.conf.nc_compression(); - - for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { - + << "trouble opening output NetCDF file " + << out_file << "\n\n"; + exit(1); + } + + // Add global attributes + write_netcdf_global(nc_out, out_file.c_str(), program_name, + NULL, NULL, conf_info.desc.c_str()); + add_att(nc_out, "mask_grid", (conf_info.mask_grid_name.nonempty() ? + (string)conf_info.mask_grid_name : + na_str)); + add_att(nc_out, "mask_poly", (conf_info.mask_poly_name.nonempty() ? + (string)conf_info.mask_poly_name : + na_str)); + + // Add time range information to the global attributes + add_att(nc_out, "init_beg", (string)unix_to_yyyymmdd_hhmmss(init_beg)); + add_att(nc_out, "init_end", (string)unix_to_yyyymmdd_hhmmss(init_end)); + add_att(nc_out, "valid_beg", (string)unix_to_yyyymmdd_hhmmss(valid_beg)); + add_att(nc_out, "valid_end", (string)unix_to_yyyymmdd_hhmmss(valid_end)); + add_att(nc_out, "lead_beg", (string)sec_to_hhmmss(lead_beg)); + add_att(nc_out, "lead_end", (string)sec_to_hhmmss(lead_end)); + + // Write the grid size, mask size, and series length + write_nc_var_int("grid_size", "number of grid points", grid.nxy()); + write_nc_var_int("mask_size", "number of mask points", conf_info.mask_area.count()); + write_nc_var_int("n_series", "length of series", n_series); + + // Compression level + int deflate_level = compress_level; + if(deflate_level < 0) deflate_level = conf_info.conf.nc_compression(); + + for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { + i_var_str << cs_erase << "VAR" << i_var; - - VarInfo *data_info = conf_info.data_info[i_var]; - - - // This is the section we need to fix SL - cout << "multiple_data_sources = " << multiple_data_sources << endl; - cout << "unique_variable_names = " << unique_variable_names << endl; + VarInfo *data_info = conf_info.data_info[i_var]; // Set variable NetCDF name ConcatString var_name = data_info->name_attr(); - cout << "Initial var_name = " << var_name << endl; var_name.add("_"); var_name.add(data_info->level_attr()); - cout << "Output var_name = " << var_name << endl; - + + if(multiple_data_sources && !unique_variable_names) { + var_name.add("_"); + var_name.add(i_var_str); + } // Define histogram dimensions NcDim var_dim = add_dim(nc_out, var_name, (long) data_info->n_bins()); data_var_dims.push_back(var_dim); - + // Define histogram bins ConcatString var_min_name = var_name; ConcatString var_max_name = var_name; @@ -588,53 +577,75 @@ void setup_nc_file(void) { cs << cs_erase << "Midpoint value of " << var_name << " bin"; add_var_att_local(&var_mid, "long_name", cs); add_var_att_local(&var_mid, "units", data_info->units_attr()); - + // Write bin values var_min.putVar(bin_mins[i_var_str].data()); var_max.putVar(bin_maxs[i_var_str].data()); var_mid.putVar(bin_mids[i_var_str].data()); } - + // Define histograms for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { + i_var_str << cs_erase << "VAR" << i_var; + VarInfo *data_info = conf_info.data_info[i_var]; // Set variable NetCDF name ConcatString var_name = data_info->name_attr(); var_name.add("_"); var_name.add(data_info->level_attr()); - + + if(multiple_data_sources && !unique_variable_names) { + var_name.add("_"); + var_name.add(i_var_str); + } + ConcatString hist_name("hist_"); hist_name.add(var_name); NcDim var_dim = data_var_dims[i_var]; NcVar hist_var = add_var(nc_out, hist_name, ncInt64, var_dim, deflate_level); hist_vars.push_back(hist_var); - + // Add variable attributes cs << cs_erase << "Histogram of " << var_name << " values"; add_var_att_local(&hist_var, "long_name", cs); } - + // Define joint histograms for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { + i_var_str << cs_erase << "VAR" << i_var; + VarInfo *data_info = conf_info.data_info[i_var]; - + for(int j_var=i_var+1; j_varname_attr()); hist_name.add("_"); hist_name.add(data_info->level_attr()); + + if(multiple_data_sources && !unique_variable_names) { + hist_name.add("_"); + hist_name.add(i_var_str); + } + hist_name.add("_"); hist_name.add(joint_info->name_attr()); hist_name.add("_"); hist_name.add(joint_info->level_attr()); + if(multiple_data_sources && !unique_variable_names) { + hist_name.add("_"); + hist_name.add(j_var_str); + } + NcDim var_dim = data_var_dims[i_var]; NcDim joint_dim = data_var_dims[j_var]; vector dims; From 5e128a2cd2b6249a823e1a75b939bc529c6f11a2 Mon Sep 17 00:00:00 2001 From: John Halley Gotway Date: Fri, 28 Oct 2022 15:30:33 -0600 Subject: [PATCH 3/5] Per #2232, add a new Grid-Diag unit test to exercise the newly added functionality. --- .../config/GridDiagConfig_APCP_06_FCST_OBS | 4 +- internal/test_unit/xml/unit_grid_diag.xml | 40 ++++++++++++++++ src/tools/other/grid_diag/grid_diag.cc | 48 +++++++++---------- 3 files changed, 66 insertions(+), 26 deletions(-) diff --git a/internal/test_unit/config/GridDiagConfig_APCP_06_FCST_OBS b/internal/test_unit/config/GridDiagConfig_APCP_06_FCST_OBS index 9372a6bb0f..5e7c75f5e2 100644 --- a/internal/test_unit/config/GridDiagConfig_APCP_06_FCST_OBS +++ b/internal/test_unit/config/GridDiagConfig_APCP_06_FCST_OBS @@ -42,8 +42,8 @@ data = { range = [0,25]; field = [ - { set_attr_name = "FCST_APCP"; }, - { set_attr_name = "OBS_APCP"; } + { ${FIELD1} }, + { ${FIELD2} } ]; } diff --git a/internal/test_unit/xml/unit_grid_diag.xml b/internal/test_unit/xml/unit_grid_diag.xml index 10049144ac..96c9cb217f 100644 --- a/internal/test_unit/xml/unit_grid_diag.xml +++ b/internal/test_unit/xml/unit_grid_diag.xml @@ -72,6 +72,10 @@ &DATA_DIR_OBS;/stage4_hmt/stage4_2012041018_06h.grib" \ > &OUTPUT_DIR;/grid_diag/obs_file_list; \ &MET_BIN;/grid_diag + + FIELD1 set_attr_name = "FCST_APCP"; + FIELD2 set_attr_name = "OBS_APCP"; + \ -data &OUTPUT_DIR;/grid_diag/fcst_file_list \ -data &OUTPUT_DIR;/grid_diag/obs_file_list \ @@ -84,4 +88,40 @@ + + + + echo "&DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F006.grib \ + &DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F012.grib \ + &DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F018.grib \ + &DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F024.grib \ + &DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F030.grib \ + &DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F036.grib \ + &DATA_DIR_MODEL;/grib1/gfs_hmt/gfs_2012040900_F042.grib" \ + > &OUTPUT_DIR;/grid_diag/fcst_file_list; \ + echo "&DATA_DIR_OBS;/stage4_hmt/stage4_2012040906_06h.grib \ + &DATA_DIR_OBS;/stage4_hmt/stage4_2012040912_06h.grib \ + &DATA_DIR_OBS;/stage4_hmt/stage4_2012040918_06h.grib \ + &DATA_DIR_OBS;/stage4_hmt/stage4_2012041000_06h.grib \ + &DATA_DIR_OBS;/stage4_hmt/stage4_2012041006_06h.grib \ + &DATA_DIR_OBS;/stage4_hmt/stage4_2012041012_06h.grib \ + &DATA_DIR_OBS;/stage4_hmt/stage4_2012041018_06h.grib" \ + > &OUTPUT_DIR;/grid_diag/obs_file_list; \ + &MET_BIN;/grid_diag + + FIELD1 name = "APCP"; + FIELD2 name = "APCP"; + + \ + -data &OUTPUT_DIR;/grid_diag/fcst_file_list \ + -data &OUTPUT_DIR;/grid_diag/obs_file_list \ + -config &CONFIG_DIR;/GridDiagConfig_APCP_06_FCST_OBS \ + -out &OUTPUT_DIR;/grid_diag/grid_diag_APCP_06_VARN.nc \ + -v 3 + + + &OUTPUT_DIR;/grid_diag/grid_diag_APCP_06_VARN.nc + + + diff --git a/src/tools/other/grid_diag/grid_diag.cc b/src/tools/other/grid_diag/grid_diag.cc index c87e0ca41b..4a1d1da15e 100644 --- a/src/tools/other/grid_diag/grid_diag.cc +++ b/src/tools/other/grid_diag/grid_diag.cc @@ -211,7 +211,7 @@ void process_command_line(int argc, char **argv) { } } // end for i - + // Process the configuration conf_info.process_config(file_types); @@ -492,17 +492,17 @@ void setup_joint_histograms(void) { void setup_nc_file(void) { ConcatString cs, i_var_str, j_var_str; - + // Create NetCDF file nc_out = open_ncfile(out_file.c_str(), true); - + if(IS_INVALID_NC_P(nc_out)) { mlog << Error << "\nsetup_nc_file() -> " << "trouble opening output NetCDF file " << out_file << "\n\n"; exit(1); } - + // Add global attributes write_netcdf_global(nc_out, out_file.c_str(), program_name, NULL, NULL, conf_info.desc.c_str()); @@ -520,7 +520,7 @@ void setup_nc_file(void) { add_att(nc_out, "valid_end", (string)unix_to_yyyymmdd_hhmmss(valid_end)); add_att(nc_out, "lead_beg", (string)sec_to_hhmmss(lead_beg)); add_att(nc_out, "lead_end", (string)sec_to_hhmmss(lead_end)); - + // Write the grid size, mask size, and series length write_nc_var_int("grid_size", "number of grid points", grid.nxy()); write_nc_var_int("mask_size", "number of mask points", conf_info.mask_area.count()); @@ -529,23 +529,23 @@ void setup_nc_file(void) { // Compression level int deflate_level = compress_level; if(deflate_level < 0) deflate_level = conf_info.conf.nc_compression(); - + for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { - + i_var_str << cs_erase << "VAR" << i_var; - + VarInfo *data_info = conf_info.data_info[i_var]; - + // Set variable NetCDF name ConcatString var_name = data_info->name_attr(); var_name.add("_"); var_name.add(data_info->level_attr()); - + if(multiple_data_sources && !unique_variable_names) { var_name.add("_"); var_name.add(i_var_str); } - + // Define histogram dimensions NcDim var_dim = add_dim(nc_out, var_name, (long) data_info->n_bins()); @@ -577,55 +577,55 @@ void setup_nc_file(void) { cs << cs_erase << "Midpoint value of " << var_name << " bin"; add_var_att_local(&var_mid, "long_name", cs); add_var_att_local(&var_mid, "units", data_info->units_attr()); - + // Write bin values var_min.putVar(bin_mins[i_var_str].data()); var_max.putVar(bin_maxs[i_var_str].data()); var_mid.putVar(bin_mids[i_var_str].data()); } - + // Define histograms for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { i_var_str << cs_erase << "VAR" << i_var; - + VarInfo *data_info = conf_info.data_info[i_var]; // Set variable NetCDF name ConcatString var_name = data_info->name_attr(); var_name.add("_"); var_name.add(data_info->level_attr()); - + if(multiple_data_sources && !unique_variable_names) { var_name.add("_"); var_name.add(i_var_str); } - + ConcatString hist_name("hist_"); hist_name.add(var_name); NcDim var_dim = data_var_dims[i_var]; NcVar hist_var = add_var(nc_out, hist_name, ncInt64, var_dim, deflate_level); hist_vars.push_back(hist_var); - + // Add variable attributes cs << cs_erase << "Histogram of " << var_name << " values"; add_var_att_local(&hist_var, "long_name", cs); } - + // Define joint histograms for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { i_var_str << cs_erase << "VAR" << i_var; - + VarInfo *data_info = conf_info.data_info[i_var]; - + for(int j_var=i_var+1; j_varname_attr()); hist_name.add("_"); @@ -635,7 +635,7 @@ void setup_nc_file(void) { hist_name.add("_"); hist_name.add(i_var_str); } - + hist_name.add("_"); hist_name.add(joint_info->name_attr()); hist_name.add("_"); @@ -645,7 +645,7 @@ void setup_nc_file(void) { hist_name.add("_"); hist_name.add(j_var_str); } - + NcDim var_dim = data_var_dims[i_var]; NcDim joint_dim = data_var_dims[j_var]; vector dims; From 4dbeb11bc4da514f7c24d23fc91379ac368dd73f Mon Sep 17 00:00:00 2001 From: MET Tools Test Account Date: Fri, 28 Oct 2022 15:33:49 -0600 Subject: [PATCH 4/5] Unrelated to #2232, these 2 Makefile.in files needed to be recreated on seneca. The -lvx_seeps library should be listed in the linker list immediately before -lvx_nc_util. That was changed in the corresponding Makefile.am files but these Makefile.in files weren't updated as needed. --- src/tools/tc_utils/tc_gen/Makefile.in | 2 +- src/tools/tc_utils/tc_stat/Makefile.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/tools/tc_utils/tc_gen/Makefile.in b/src/tools/tc_utils/tc_gen/Makefile.in index 0bda9b9032..a67a37f4af 100644 --- a/src/tools/tc_utils/tc_gen/Makefile.in +++ b/src/tools/tc_utils/tc_gen/Makefile.in @@ -337,10 +337,10 @@ tc_gen_LDADD = -lvx_stat_out \ -lvx_statistics \ -lvx_gis \ -lvx_data2d \ + -lvx_seeps \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ - -lvx_seeps \ -lvx_config \ -lvx_pb_util \ -lvx_cal \ diff --git a/src/tools/tc_utils/tc_stat/Makefile.in b/src/tools/tc_utils/tc_stat/Makefile.in index df8bbe5b6a..009d76c61e 100644 --- a/src/tools/tc_utils/tc_stat/Makefile.in +++ b/src/tools/tc_utils/tc_stat/Makefile.in @@ -340,10 +340,10 @@ tc_stat_LDADD = -lvx_stat_out \ -lvx_data2d_nccf \ -lvx_statistics \ -lvx_data2d \ + -lvx_seeps \ -lvx_nc_util \ -lvx_regrid \ -lvx_grid \ - -lvx_seeps \ -lvx_config \ -lvx_gsl_prob \ -lvx_pb_util \ From 3da9e9abdd52d086d30c67eba99f2c70c0fcf40d Mon Sep 17 00:00:00 2001 From: MET Tools Test Account Date: Fri, 28 Oct 2022 15:42:04 -0600 Subject: [PATCH 5/5] Per #2232, switch from making the VAR# strings 0-based to 1-based. So start with VAR1 instead of VAR0. That is more consistent with naming/numbering conventions used by the METplus wrappers. --- src/basic/vx_config/config.tab.cc | 2 +- src/tools/other/grid_diag/grid_diag.cc | 26 +++++++++++++------------- src/tools/tc_utils/tc_gen/Makefile.am | 2 +- src/tools/tc_utils/tc_gen/Makefile.in | 2 +- src/tools/tc_utils/tc_stat/Makefile.am | 2 +- src/tools/tc_utils/tc_stat/Makefile.in | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/basic/vx_config/config.tab.cc b/src/basic/vx_config/config.tab.cc index 5b67009f59..43fe74766f 100644 --- a/src/basic/vx_config/config.tab.cc +++ b/src/basic/vx_config/config.tab.cc @@ -1389,7 +1389,7 @@ yyparse (void) YYDPRINTF ((stderr, "Starting parse\n")); - yystate = 8; + yystate = 0; yyerrstatus = 0; yynerrs = 0; yychar = YYEMPTY; /* Cause a token to be read. */ diff --git a/src/tools/other/grid_diag/grid_diag.cc b/src/tools/other/grid_diag/grid_diag.cc index 4a1d1da15e..1ffa59d028 100644 --- a/src/tools/other/grid_diag/grid_diag.cc +++ b/src/tools/other/grid_diag/grid_diag.cc @@ -265,7 +265,7 @@ void process_series(void) { // Process the 1d histograms for(int i_var=0; i_varn_bins(); for(int j_var=i_var+1; j_varn_bins(); @@ -532,7 +532,7 @@ void setup_nc_file(void) { for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { - i_var_str << cs_erase << "VAR" << i_var; + i_var_str << cs_erase << "VAR" << i_var+1; VarInfo *data_info = conf_info.data_info[i_var]; @@ -587,7 +587,7 @@ void setup_nc_file(void) { // Define histograms for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { - i_var_str << cs_erase << "VAR" << i_var; + i_var_str << cs_erase << "VAR" << i_var+1; VarInfo *data_info = conf_info.data_info[i_var]; @@ -616,13 +616,13 @@ void setup_nc_file(void) { // Define joint histograms for(int i_var=0; i_var < conf_info.get_n_data(); i_var++) { - i_var_str << cs_erase << "VAR" << i_var; + i_var_str << cs_erase << "VAR" << i_var+1; VarInfo *data_info = conf_info.data_info[i_var]; for(int j_var=i_var+1; j_var