A new release of the python netCDF4 python module (0.5) is now available
that supports both compound and vlen data types.
Here's a simple example that shows how to create a compound data type,
or table:
>>> # open a new file for writing
>>> import netCDF4
>>> ncfile = netCDF4.Dataset('test.h5','w')
>>> # create an unlimited dimension called 'station'
>>> ncfile.createDimension('station',False)
>>> # create a compound datatype.
>>> # (a list of 3-tuples containing
>>> # the name of each member, it's primitive data type, and it's size).
>>> # Only fixed-size primitive data types allowed (no variable length
>>> # strings, or other compound types)
>>> # Members can be multi-dimensional arrays (in which case the third
>>> # element is a shape tuple instead of a scalar).
>>> datatype = [('latitude', 'f4',1), ('longitude', 'f4',1),
>>> ('sfc_press','i4',1), ('temp_sounding','f4',10)]
>>> table = ncfile.createUserType(datatype,'compound','station_data')
>>> # create a variable with this data type.
>>> statdat = ncfile.createVariable('station_obs', table, ('station',))
>>> # write one record of data.
>>> statdat[0] = (40.78,-73.99,1002,
>>> (290.2,282.5,279.,277.9,276.,266.,264.1,260.,255.5,243.))
>>> # close and reopen the file, take a look at the data.
>>> ncfile.close()
>>> ncfile = netCDF4.Dataset('test.h5')
>>> statdat = ncfile.variables['station_obs']
>>> # retrieve the data.
>>> statdatout = statdat[:]
>>> # print the data type
>>> print statdatout.dtype
[('latitude', '>f4'), ('longitude', '>f4'), ('sfc_press', '>i4'),
('temp_sounding', '>f4', (10,))]
>>> # print the data.
>>> print statdatout[:]
[ (40.779998779296875, -73.989997863769531, 1002, array([ 290.20001221,
282.5 , 279. , 277.8999939 ,
276. , 266. , 264.1000061 , 260. ,
255.5 , 243. ], dtype=float32))]
The primary restriction is that you can't yet have nested compound data
types (compound data types whose elements are also compound data types).
The netCDF4_classic module provides a high-degree of compatibility with
the most popular python netCDF3 module, Scientific.IO.NetCDF. It can
read or write NETCDF3 and NETCDF4_CLASSIC files, and can use zlib
compression in NETCDF4_CLASSIC mode.
For more information, and to download the source, see
http://code.google.com/p/netcdf4-python/
Regards,
-Jeff
P.S. Russ or Ed, could you update the URL on
http://www.unidata.ucar.edu/software/netcdf/software.html to point to
the google URL?
--
Jeffrey S. Whitaker Phone : (303)497-6313
Meteorologist FAX : (303)497-6449
NOAA/OAR/PSD R/PSD1 Email : Jeffrey.S.Whitaker@xxxxxxxx
325 Broadway Office : Skaggs Research Cntr 1D-124
Boulder, CO, USA 80303-3328 Web : http://tinyurl.com/5telg
==============================================================================
To unsubscribe netcdfgroup, visit:
http://www.unidata.ucar.edu/mailing-list-delete-form.html
==============================================================================