NOTICE: This version of the NSF Unidata web site (archive.unidata.ucar.edu) is no longer being updated.
Current content can be found at unidata.ucar.edu.
To learn about what's going on, see About the Archive Site.
The netCDF Operators NCO version 4.6.6 are ready. http://nco.sf.net (Homepage, Mailing lists) http://github.com/nco (Source Code, Releases, Developers) What's new? 4.6.6 contains a potpurri of new features: Output 2D rectangular grids formatted as UGRID meshes. Calendar dates print for bounds and climatology variables. Revamped HPSS/hsi support. The splitter produces cleaner output. The regridder groks more files and masks, and annotates output with more helpful metadata. CDL mode handles compound record variables. JSON output has changed slightly to re-use NcML keywords. ncclimo and ncremap have new extract/exclude options. EVERYONE WHO USES NCKS TO PRINT DATA PLEASE READ THIS: We would like to change the default behavior of ncks printing. For 20+ years ncks has, by default, dumped the text representation of a file in (what we call) "traditional" mode. ncdump produces a format called CDL that is more useful than traditional mode for most NCO users. ncks has produced CDL since only 2013 and so CDL is not the default. ncdump has always printed CDL very cleanly and clearly there was little point in making CDL the default for ncks. Now ncks CDL mode rivals ncdump, and is superior in some ways. In particular, ncks now prints times as human-readable calendar dates, the last ncdump feature I used that ncks did not have. We propose to change the default printed output of ncks to CDL. Then one would type simply "ncks" instead of "ncks --cdl". A new "--trd" option would still print traditional output. Let us know if this bothers or pleases you prior to 4.6.7. You have been warned :) Work on NCO 4.6.7 has commenced. Planned improvements include support for conda installs on MS Windows, more ncclimo and ncremap features. Enjoy, Charlie NEW FEATURES (full details always in ChangeLog): A. ncremap and ncclimo support new extract/exclude switches: --no_cll_msr: Exclude cell_measures variables --no_frm_trm: Exclude formula_terms variables --no_ntv_tms: Exclude native-grid timeseries (splitter only) --no_stg_grd: Exclude staggered grid coordinates By default, these variables are always extracted. Use the above switches to exclude them instead, e.g., ncclimo --no_cll_msr --no_frm_trm --no_ntv_tms --no_stg_grd ... http://nco.sf.net/nco.html#no_cll_msr http://nco.sf.net/nco.html#no_frm_trm http://nco.sf.net/nco.html#no_ntv_tms http://nco.sf.net/nco.html#no_stg_grd B. ncclimo's splitter mode no longer requires variable lists. Previously the splitter required a '-v var_lst' option to know which variables to split into timeseries. Now when the -v option is omitted the splitter creates timeseries of all variables of rank R >= 2. Typically this includes all spatial variables. Variables known to be extensive (like grid properties) are automatically excluded from this list. However, we expect there will be some cases where the splitter creates timeseries from R >= 2 variables that are not desirable. We are happy to encode manual exceptions as we receive notice of them. ncclimo -s 1979 -e 1981 -o $drc_out in*.nc http://nco.sf.net/nco.html#ncclimo C. The regridder now produces UGRID output for 2D rectangular grids. Invoke ncremap in grid inferral mode with "--rgr ugrid=foo.nc" and voilà, an annoted UGRID file is produce along with the default SCRIP gridfile. The NCO UGRID is more complete than that produced by ESMF_Scrip2Unstruct, but ESMF can create UGRID for much more comlex grids. The NCO regridder can currently only generate UGRID for rectangular 2D input grids, and there are no plans to extend this to curvilinear or unstructured input grids. ncks --rgr nfr=Y --rgr grid=scrip.nc --rgr ugrid=ugrid.nc in.nc out.nc http://nco.sf.net/nco.html#rgr D. ncks now prints the units, if any, in comments after CDL values when debugging is enabled with dbg_lvl >=1: zender@foo: ncks --cdl -D 1 in.nc lat = -90, 90 ; // units="degrees_north" lon = 0, 90, 180, 270 ; // units="degrees_east" tpt = 273.1, 273.2, ... 274 ; // units="kelvin" http://nco.sf.net/nco.html#cdl E. ncap2 now implements the CF cell_methods convention. ncra, nces, and ncwa have long implemented this, and now the relevant ncap2 methods (avg, min, max, etc.) record the operation type in the cell_methods attribute. ncap2 -s 'avg=one_dmn_rec_var.avg()' ~/nco/data/in.nc ~/foo.nc http://nco.sf.net/nco.html#cll_mth F. Since 4.6.5 ncks has printed the human-legible calendar string corresponding to values with UDUnits date units (time since basetime, e.g., "days since 2000-01-01") and CF calendar attribute, if any. Now ncks also translates and prints time values associated with CF climatology and bounds variables as human legible dates. As before, enact this with the --calendar option when printing. Using dbg_lvl >= 1 in CDL mode prints both the value and calendar string (one in comments): zender@aerosol:~$ ncks -D 1 --cdl --cal -v tm_365 ~/nco/data/in.nc tm_365 = "2013-03-01"; // double value: 59 zender@aerosol:~$ ncks -D 1 --cdl -v tm_365 ~/nco/data/in.nc tm_365 = 59; // calendar format: "2013-03-01" This option is similar to the ncdump -t option. Does this work how you'd like? Let us know. http://nco.sf.net/nco.html#cal G. ncks now prints "(no units)" instead of "(null)" as the units string for variables with no units. And in CDL mode ncks, when invoked with debugging (e.g., -D 1) prints the units string in the comment section after the values of a variable. BUG FIXES: A. NCO now exits with a clear message instead of core dump on missing files on HPSS systems with the hsi command. B. ncremap will no longer define mask variables in inferred grid files unless it finds a mask variable in the source file. Previously ncremap could define a mask variable in the inferred grid file and never fill-it with data. C. ncremap now invokes the neareststod algorithm when requested. Previously a typo caused ncremap to invoke nearestdtos when neareststod was specified (doh!). Solution is to upgrade. D. ncremap now converts non-default masks correctly in infer mode. Previously a "mask" variable in an input file whose grid structure was being inferred could be incorrectly handled for some numeric types. This likely only affected masks with missing values. Sources of files possibly affected include AMSR and CICE. E. ncks now prints braces required to disambiguate compound record dimensions in CDL mode. Such braces have been required by ncgen-like parsers since ~2013 in order to unambiguously determine the record dimension sizes in variables with multiple record dimensions. This fix only affects CDL printing of netCDF4 files that contain compound record variables. KNOWN PROBLEMS DUE TO NCO: This section of ANNOUNCE reports and reminds users of the existence and severity of known, not yet fixed, problems. These problems occur with NCO 4.6.6 built/tested under MacOS 10.12.3 with netCDF 4.4.1 on HDF5 1.8.16 and with Linux with netCDF 4.4.2-development (20161116) on HDF5 1.8.16. A. NOT YET FIXED (NCO problem)Correctly read arrays of NC_STRING with embedded delimiters in ncatted arguments
Demonstration:ncatted -D 5 -O -a new_string_att,att_var,c,sng,"list","of","str,ings" ~/nco/data/in_4.nc ~/foo.nc
ncks -m -C -v att_var ~/foo.nc 20130724: Verified problem still exists TODO nco1102 Cause: NCO parsing of ncatted arguments is not sophisticated enough to handle arrays of NC_STRINGS with embedded delimiters. B. NOT YET FIXED (NCO problem?)ncra/ncrcat (not ncks) hyperslabbing can fail on variables with multiple record dimensions
Demonstration: ncrcat -O -d time,0 ~/nco/data/mrd.nc ~/foo.nc 20140826: Verified problem still exists 20140619: Problem reported by rmla Cause: Unsure. Maybe ncra.c loop structure not amenable to MRD? Workaround: Convert to fixed dimensions then hyperslab KNOWN PROBLEMS DUE TO BASE LIBRARIES/PROTOCOLS: A. NOT YET FIXED (netCDF4 or HDF5 problem?) Specifying strided hyperslab on large netCDF4 datasets leads to slowdown or failure with recent netCDF versions. Demonstration with NCO <= 4.4.5: time ncks -O -d time,0,,12 ~/ET_2000-01_2001-12.nc ~/foo.nc Demonstration with NCL: time ncl < ~/nco/data/ncl.ncl 20140718: Problem reported by Parker Norton 20140826: Verified problem still exists 20140930: Finish NCO workaround for problem Cause: Slow algorithm in nc_var_gets()? Workaround #1: Use NCO 4.4.6 or later (avoids nc_var_gets()) Workaround #2: Convert file to netCDF3 first, then use stride B. NOT YET FIXED (netCDF4 library bug)Simultaneously renaming multiple dimensions in netCDF4 file can corrupt output
Demonstration:ncrename -O -d lev,z -d lat,y -d lon,x ~/nco/data/in_grp.nc ~/foo.nc # Completes but file is unreadable
ncks -v one ~/foo.nc20150922: Confirmed problem reported by Isabelle Dast, reported to Unidata
20150924: Unidata confirmed problem 20160212: Verified problem still exists in netCDF library 20160512: Ditto 20161028: Verified problem still exists with netCDF 4.4.1 20170323: Verified problem still exists with netCDF 4.4.2-development Bug tracking: https://www.unidata.ucar.edu/jira/browse/fxm More details: http://nco.sf.net/nco.html#ncrename_crd C. NOT YET FIXED (netCDF4 library bug)Renaming a non-coordinate variable to a coordinate variable fails in netCDF4
Demonstration:ncrename -O -v non_coord,coord ~/nco/data/in_grp.nc ~/foo.nc # Fails (HDF error)
20170323: Confirmed problem reported by Paolo Oliveri, reported to Unidata
Bug tracking: https://www.unidata.ucar.edu/jira/browse/fxm More details: http://nco.sf.net/nco.html#ncrename_crdD. FIXED in netCDF Development branch as of 20161116 and in maintenance release 4.4.1.1 nc-config/nf-config produce erroneous switches that cause NCO builds to fail
This problem affects netCDF 4.4.1 on all operating systems. Some pre-compiled netCDF packages may have patched the problem. Hence it does not affect my MacPorts install of netCDF 4.4.1. Demonstration: % nc-config --cflags # Produces extraneous text that confuses make Using nf-config: /usr/local/bin/nf-config -I/usr/local/include -I/usr/local/include -I/usr/include/hdf If your nc-config output contains the "Using ..." line, you are affected by this issue. 20161029: Reported problem to Unidata20161101: Unidata confirmed reproducibility, attributed to netCDF 4.4.1 changes
20161116: Unidata patch is in tree for netCDF 4.4.2 release 20161123: Fixed in maintenance release netCDF 4.4.1.1 E. NOT YET FIXED (would require DAP protocol change?) Unable to retrieve contents of variables including period '.' in name Periods are legal characters in netCDF variable names. Metadata are returned successfully, data are not. DAP non-transparency: Works locally, fails through DAP server. Demonstration:ncks -O -C -D 3 -v var_nm.dot -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc # Fails to find variable
20130724: Verified problem still exists. Stopped testing because inclusion of var_nm.dot broke all test scripts.NB: Hard to fix since DAP interprets '.' as structure delimiter in HTTP query string.
Bug tracking: https://www.unidata.ucar.edu/jira/browse/NCF-47 F. NOT YET FIXED (would require DAP protocol change) Correctly read scalar characters over DAP. DAP non-transparency: Works locally, fails through DAP server. Problem, IMHO, is with DAP definition/protocol Demonstration:ncks -O -D 1 -H -C -m --md5_dgs -v md5_a -p http://thredds-test.ucar.edu/thredds/dodsC/testdods in.nc
20120801: Verified problem still exists Bug report not filed Cause: DAP translates scalar characters into 64-element (this dimension is user-configurable, but still...), NUL-terminated strings so MD5 agreement fails "Sticky" reminders: A. Reminder that NCO works on most HDF4 and HDF5 datasets, e.g., HDF4: AMSR MERRA MODIS ... HDF5: GLAS ICESat Mabel SBUV ... HDF-EOS5: AURA HIRDLS OMI ... B. Pre-built executables for many OS's at: http://nco.sf.net#bnr -- Charlie Zender, Earth System Sci. & Computer Sci. University of California, Irvine 949-891-2429 )'(
netcdfgroup
archives: