Version 4.7.4 of the netCDF Operators (NCO) has been released. NCO is an Open Source package that consists of a dozen standalone, command-line programs that take netCDF files as input, then operate (e.g., derive new data, average, print, hyperslab, manipulate metadata) and output the results to screen or files in text, binary, or netCDF formats.
The NCO project is coordinated by Professor Charlie Zender of the Department of Earth System Science, University of California, Irvine. More information about the project, along with binary and source downloads, are available on the SourceForge project page .
From the release message:
Version 4.7.4 updates handling of the netCDF CDF5 bug, improves filename sanitization, supports ESMF 7.1.0r regridding features, handles non-atomic types more gracefully, and implements absolute and relative paths for CF2-Group compliance.
New Features
- netCDF 4.6.1 fixes the CDF5 bug. Yay! We STRONGLY recommend that CDF5 users upgrade to netCDF 4.6.1. NCO error messages and HINTs have been updated to better describe the best practices to identify and avoid this nasty bug. http://nco.sf.net#bug_cdf5
-
NCO supports absolute and relative paths to out-of-group (OOG) variables in CF attributes as
per CF2-Group draft specification:
https://docs.google.com/document/d/1KK6IZ2ZmpaUTVgrw-GlFd6almppjvGz6D7nxVTO3BtI/edit
This feature completes NCO support for the CF2-Group extension. Sentinel-5P TROPOMI datasets, for example, require this feature.ncks -O -v aerosol_index_340_380 ~/S5P.nc
Thanks to ESA, NILU, and KNMI folks, especially Maarten Schmidt, for reporting this issue. -
ncremap
supports three new features of ESMF 7.1.0r: a second-order conservative regridding algorithm, extrapolation methods for unmapped gridcells, and degenerate source gridcells. Each of these new features is documented in the manual. Their invocation forms are as expected, e.g.:ncremap -a conserve2nd -d dst.nc in.nc out.nc ncremap --xtr_mth=idavg -d dst.nc in.nc out.nc
These two options _require_ ESMF 7.1.0r or later.ncremap
does not set the ESMF_RegridWeightGen--ignore_degenerate
option by default, since it is new and would break workflows on installations that upgraded NCO but not ESMF (this is common). However, ERWG 7.1.0r requires--ignore_degenerate
to successfully regrid some datasets (e.g., CICE) that previous ERWG versions handle fine. Hencencremap
4.7.4 may error on such datasets. The workaround (with ESMF 7.1.0r) is to explicitly pass the base ERWG options with ncremap's--esmf_opt
option:ncremap --esmf_opt='--ignore_unmapped --ignore_degenerate' ...
http://nco.sf.net/nco.html#ncremap -
ncremap
guesses the unstructured dimension is first dimension with size n_a in input map filesrc_grid_dims[0]
. Previouslyncremap
required that the unstructured dimension, if any, be pre-stored in an internal database of common dimension names, or be specified on the command line. Now, if neither of these is done,ncremap
tries the first dimension in the input data file with the same size that the supplied input mapping file, if any, expects.ncremap -m map.nc unstructured.nc out.nc
http://nco.sf.net/nco.html#ncremap
Thanks to Philip Cameron-Smith for suggesting this feature. -
Add "gridcell" to
ncremap
database of unstructured dimensions. This can help when regridding some CMIP6 boundary datasets. This is a less elegant solution than, though comlementary to, PJCS's suggestion above. -
ncap2 where()
terminates if the LHS variable in the assignment statement is a hyperslab. Previouslywhere()
ignored LHS hyperslabs and the results confused users. The manual now clarifies how to usewhere()
with hyperslabs:
http://nco.sf.net/nco.html#where -
Add "elm" and "ctsm" as
prc_typ
synonyms to "alm" and "clm" in processing type options passed toncremap -P
. -
Add "mpasseaice" as
mdl_nm
synonym to "mpascice" in model name option passed toncclimo -m
.
Additional details are available in the ChangeLog.