The netCDF Operators NCO version 4.5.3 are ready.
http://nco.sf.net (Homepage, Mailing lists)
http://github.com/nco (Source Code, Releases, Developers)
This release mainly advances features related to regridding.
The primary advance is support for curvilinear regridding.
Latitude and longitude may now be two-dimensional coordinates.
NCO will now rectangular and curvilinear grids from most
(well-behaved) input data files, so regridding swath-like data (SLD)
(e.g., WRF and much NASA L2 data) just became a lot easier.
The ~/nco/data/sld_nco.sh script integrates the most common regridding
tasks into a (hopefully) turnkey solution in time for Thanksgiving.
Feedback welcome!
According to https://www2.cisl.ucar.edu/resources/yellowstone/software
NCAR CISL supports CDO but not NCO on Yellowstone/Geyser/Caldera.
Please contact the CISL Help Desk cislhelp@xxxxxxxx if you would like
CISL to support NCO on these platforms. Thank you.
Work on NCO 4.5.4 has commenced and will better support eliciting
latitude/longitude coordinates using the CF "coordinates" convention,
regridding variables whose horizontal dimensions are not the
most-rapidly-varying.
Enjoy,
Charlie
NEW FEATURES (full details always in ChangeLog):
A. NCO's new configure --disable-doc switch allows NCO (but not its
documentation) to build on vanilla OSX again. It has long been
possible to build/install NCO on MacOSX with a common packaging
system, e.g., MacPorts, Fink, etc. However, it recently become
important to build NCO from source on vanilla MacOSX without any
packaging system. Apple has not updated some GNU tools (like
Texinfo) for over 10 years, and maintaining backwards compatibility
of the documentation on vanilla OSX is not feasible. Docs continue
to build fine with MacPorts, Fink, etc.
B. ncks --rgr nfr reads any/all grid information from input files,
infers any necessary but missing information (e.g., estimates cell
interface locations from cell midpoints), and outputs the gridfile
in SCRIP-format for easy use by offline regridders. The procedure
works on input files where NCO can identify lat/lon coordinates.
ncks --rgr nfr --rgr grid=infer.nc in.nc out.nc
http://nco.sf.net/nco.html#grid
C. ncks --rgr skl='y' creates a "skeleton" version of a data file
with the specified geometry. This skeleton file contains grid
center and interfaces locations and gridcell area. These can be
more easily be assessed, and continental outlines examined, than
with the corresponding SCRIP file. The skeleton can also be
manually populated with data rather than relying on a model.
# Generate T42 Gaussian grid file t42_SCRIP.nc and skeleton file
t42_skl.nc
ncks --rgr skl=${DATA}/grids/t42_skl.nc --rgr
grid=${DATA}/grids/t42_SCRIP.nc \
--rgr latlon=64,128 --rgr lat_typ=gss --rgr lon_typ=Grn_ctr \
~zender/nco/data/in.nc ~/foo.nc
http://nco.sf.net/nco.html#skl
D. Generate 2-D regional grids in SCRIP format, and, in conjunction
with a mapfile, regrid to/from regional bounding boxes.
During grid generation, specify bounding box edges with
--rgr wesn=lon_wst,lon_est,lat_sth,lat_nrt or
--rgr snwe=lat_sth,lat_nrt,lon_wst,lon_est
This feature debuted 4.5.2 but was not announced because it
was not yet documented.
# Regrid global file to regional domain
ncks --map map_global_to_regional_bilin.nc in.nc out.nc
http://nco.sf.net/nco.html#grid
http://nco.sf.net/nco.html#regrid
E. Use --xtn_var or --extensive to specify extensive variables.
Extensive variables are summed not averaged during regridding.
The support for extensive variables is not yet robust, yet we
are ready to receive feedback from early adopters.
ncks --xtn count --map map.nc in.nc out.nc
http://nco.sf.net/nco.html#regrid
BUG FIXES:
A. ncks fixes two newly uncovered regridder bugs that were exposed by
multi-level fields that contain missing values and underwent
non-conservative (e.g., bilinear) regridding. The bugs were in
threaded code and show up in compiler-specific ways.
The solution is to upgrade to 4.5.3.
Thanks to PNNL for first reporting problems.
B. ncap2 now evaluates logical expressions with a method that does
not convert the type of the arguments to lesser precision.
This fixes incorrect results that could occur when an argument
could not be represented by the lesser precision.
The solution is to upgrade to 4.5.3. Thanks to Maxim Petrenko for
reporting this problem, and to Henry Butowsky for fixing it.
C. ncecat version 4.4.9 introduced a problem that could cause it
to fail when using --gag mode on a single file. This problem
has been fixed. The solution is to upgrade to 4.5.3, or to use
versions 4.4.8 and prior if you encounter this problem.
Thanks to Huan Wu for reporting this problem.
D. ncatted version 4.5.1 introduced a bug that dumps core when
attribute deletion is requested without a specific attribute name,
i.e., whenever all attributes are to be deleted. The workaround is
to specify the attribute name(s) to be deleted, to use versions
4.5.0 and earlier, or to upgrade to 4.5.3. Thanks to Richard Strub
for reporting this problem.
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.5.3 built/tested with netCDF
4.4.0-development (20150818) on top of HDF5 hdf5-1.8.13 with:
cd ~/nco;./configure # Configure mechanism -or-
cd ~/nco/bld;make dir;make allinone # Old Makefile mechanism
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.nc
20150922: Confirmed problem reported by Isabelle Dast, reported to
Unidata
20150924: Unidata confirmed problem
Bug tracking: https://www.unidata.ucar.edu/jira/browse/fxm
More details: http://nco.sf.net/nco.html#ncrename_crd
C. 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
D. 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
C. Running jobs at NCAR, NERSC, ANL, ORNL? NCO is in ~zender/[bin,lib]
--
Charlie Zender, Earth System Sci. & Computer Sci.
University of California, Irvine 949-891-2429 )'(