ncdigest V1 #1119
Paul van Delst
Paul.Vandelst at noaa.gov
Mon Aug 13 12:29:46 MDT 2007
Jeff Whitaker wrote:
> Ed Hartnett wrote:
>> Jeff Whitaker <jswhit at fastmail.fm> writes:
>>
>>
>>> By the way, while I'm ranting ... Another potential problem is see is
>>> nested user-defined types. Since this is allowed in netcdf-4, I can
>>> see the potential for creating horribly complicated files with
>>> compounds of vlens containing compounds containing enums etc. Don't
>>> think many people would be crazy enough to use it, but it makes it
>>> very hard to create client code to read arbitrary netcdf-4 files,
>>> since you have to check for all those possibilities in general. I
>>> wonder whether it might not be wise to sacrifice some generality for
>>> simplicity and just say that user-defined types can only be composed
>>> of primitive data types.
>>>
>>>
>>
>> Howdy Jeff!
>>
>> Here at NetCDF World Headquarters, we also wonder how these new
>> features will be used by the netCDF community!
>>
>> Perhaps some of the HDF5 readers of this mailing list can provide some
>> real world examples of nested structures.
>>
>> To read them, the only general purpose answer I know of (as with
>> groups) is a recursive function. This is how the netCDF-4 file reading
>> code handles the problem, and, I believe, how ncdump handles the
>> problem (Russ will correct me if I'm wrong about ncdump).
>> Both of these are in C (for example libsrc4/nc4hdf5.c, function
>> rec_read_metadata().
>>
>> The problem, perhaps, is what to do with this information once you
>> have it.
>> For example, it's easy to plot a data file full of NC_INT, or
>> NC_FLOAT, but how do you plot a file full of data in compound types?
>>
>> It is a more complicated problem, but I'm sure the very clever
>> programmers working on the IDV will come up with something. ;-)
>>
>> Although these new features present many new complexities, the
>> CLASSIC_MODEL flag allows users to produce netCDF-4 files which don't
>> use any of the user-defined types, and thus can be read (and, with a
>> little modification on the nc_create call, written) by existing
>> software.
>>
>> Thanks!
>>
>> Ed
>>
>>
> Ed: I think it's relatively easy (and productive) to deal with
> compound types, where the elements are primitive (fixed size) data
> types. I think that allowing nested compound types (or compound types
> containing vlens) increases the complexity exponentially though,
> Unless there are some real use cases out there, I wonder if it is really
> worth it.
This is an anecdotal datapoint, but I use nested structures now (only one level deep
though) in my f95 code. I tend to write "atomic" I/O functions (wrappers around the
required f90 API calls) for structures which translates to reading from separate files. It
would be nice to be able to "layer" that sort of functionality. I guess it's a
file-within-a-file type of thing.
Having said all that, I also value simplicity. netCDF is an *extremely* useful format from
that perspective for what I do. Is there a hue and cry from the user community for
multi-level nested compound type I/O in future netCDF versions? Otherwise, I think JeffW's
initial idea,
"I wonder whether it might not be wise to sacrifice some generality for
simplicity and just say that user-defined types can only be composed
of primitive data types."
(which I interpret as similar to my "one level deep" nesting) is a very good one.
cheers,
paulv
==============================================================================
To unsubscribe netcdfgroup, visit:
http://www.unidata.ucar.edu/mailing-list-delete-form.html
==============================================================================
More information about the netcdfgroup
mailing list