Re: [netcdfgroup] stupid question: how do I dump just the contents of a variable from a netCDF file?

Not a stupid question, but a frequent one.  To get just ascii for one
variable, one datum per line, no indices or labels (following Pedro's
suggestion to use ncks):

ncks -s '%13.9f\n' -C -H -d time,0,3 -v precip precip.ens01.nc
  0.000002705
  0.000002711
  0.000002716
  0.000002711
  0.000002707
<snip>

This follows one of the lower examples in the ncks on-line
documentation ( http://nco.sourceforge.net/nco.html ).  Notes:

1.  Behavior may change with NCO versions.  I had to add -H to get
output matching the example on the website.  My NCO/ncks version is
4.2.0.

2.  One advantage of ncks is that you can specify a printf-style
format string to get the desired format and significant digits, as
shown here.

3.  Another advantage is that you can use NCO's -d option to subscript
along any dimensions needed (hyperslabs).  Also as shown above.

4.  Careful, the \n in the format string is critical when using -s.
This also results in an extra blank line at the end of the output.

--Dave

On Wed, Sep 19, 2012 at 3:09 PM, Pedro Vicente
<pedro.vicente@xxxxxxxxxxxxxxxxxx> wrote:
>>> I just want either a single-column ascii output of the data values or a
>>> binary dump that I can run od on to get same.
>
>
> $ ncdump -v data example_000.nc
> $ ncks -v data example_000.nc
> $ h5dump -d data example_000.nc
>
>
> below outputs for each, it seems ncks is what you want
>
>
> $ ncdump -v data example_000.nc
>
> netcdf example_000 {
> dimensions:
>        x = 4 ;
>        y = 6 ;
> variables:
>        float data(x, y) ;
>        float x(x) ;
>        float y(y) ;
> data:
>
> data =
>  0, 1, 2, 3, 4, 5,
>  6, 7, 8, 9, 10, 11,
>  12, 13, 14, 15, 16, 17,
>  18, 19, 20, 21, 22, 23 ;
> }
>
>
> $ ncks -v data example_000.nc
>
> data: type NC_FLOAT, 2 dimensions, 0 attributes, chunked? no, compressed?
> no, packed? no, ID = 0
> data size (in RAM) is 4*6*sizeof(NC_FLOAT) = 24*4 = 96 bytes
> data dimension 0: x, size = 4 NC_FLOAT, dim. ID = 0 (Coordinate dimension)
> data dimension 1: y, size = 6 NC_FLOAT, dim. ID = 1 (Coordinate dimension)
>
> x: type NC_FLOAT, 1 dimension, 0 attributes, chunked? no, compressed? no,
> packed? no, ID = 1
> x size (in RAM) is 4*sizeof(NC_FLOAT) = 4*4 = 16 bytes
> x dimension 0: x, size = 4 NC_FLOAT, dim. ID = 0 (Coordinate dimension)
>
> y: type NC_FLOAT, 1 dimension, 0 attributes, chunked? no, compressed? no,
> packed? no, ID = 2
> y size (in RAM) is 6*sizeof(NC_FLOAT) = 6*4 = 24 bytes
> y dimension 0: y, size = 6 NC_FLOAT, dim. ID = 1 (Coordinate dimension)
>
> x[0]=0 y[0]=0 data[0]=0
> x[0]=0 y[1]=10 data[1]=1
> x[0]=0 y[2]=20 data[2]=2
> x[0]=0 y[3]=30 data[3]=3
> x[0]=0 y[4]=40 data[4]=4
> x[0]=0 y[5]=50 data[5]=5
> x[1]=10 y[0]=0 data[6]=6
> x[1]=10 y[1]=10 data[7]=7
> x[1]=10 y[2]=20 data[8]=8
> x[1]=10 y[3]=30 data[9]=9
> x[1]=10 y[4]=40 data[10]=10
> x[1]=10 y[5]=50 data[11]=11
> x[2]=20 y[0]=0 data[12]=12
> x[2]=20 y[1]=10 data[13]=13
> x[2]=20 y[2]=20 data[14]=14
> x[2]=20 y[3]=30 data[15]=15
> x[2]=20 y[4]=40 data[16]=16
> x[2]=20 y[5]=50 data[17]=17
> x[3]=30 y[0]=0 data[18]=18
> x[3]=30 y[1]=10 data[19]=19
> x[3]=30 y[2]=20 data[20]=20
> x[3]=30 y[3]=30 data[21]=21
> x[3]=30 y[4]=40 data[22]=22
> x[3]=30 y[5]=50 data[23]=23
>
> x[0]=0
> x[1]=10
> x[2]=20
> x[3]=30
>
> y[0]=0
> y[1]=10
> y[2]=20
> y[3]=30
> y[4]=40
> y[5]=50
>
>
>
> $ h5dump -d data example_000.nc
>
> HDF5 "example_000.nc" {
> DATASET "data" {
>   DATATYPE  H5T_IEEE_F32LE
>   DATASPACE  SIMPLE { ( 4, 6 ) / ( 4, 6 ) }
>   DATA {
>   (0,0): 0, 1, 2, 3, 4, 5,
>   (1,0): 6, 7, 8, 9, 10, 11,
>   (2,0): 12, 13, 14, 15, 16, 17,
>   (3,0): 18, 19, 20, 21, 22, 23
>   }
>   ATTRIBUTE "DIMENSION_LIST" {
>      DATATYPE  H5T_VLEN { H5T_REFERENCE { H5T_STD_REF_OBJECT }}
>      DATASPACE  SIMPLE { ( 2 ) / ( 2 ) }
>      DATA {
>      (0): (DATASET 539 /x ), (DATASET 823 /y )
>      }
>   }
> }
> }
>
>
>
> ----------------------
> Pedro Vicente
> pedro.vicente@xxxxxxxxxxxxxxxxxx
> http://www.space-research.org/
>
>
> ----- Original Message ----- From: "Lynnes, Christopher S. (GSFC-6102)"
> <christopher.s.lynnes@xxxxxxxx>
> To: "NetCDF Group List" <netcdfgroup@xxxxxxxxxxxxxxxx>
> Sent: Wednesday, September 19, 2012 3:35 PM
> Subject: [netcdfgroup] stupid question: how do I dump just the contents of a
> variable from a netCDF file?
>
>
>> I mean, no header info, no data attributes, no coordinate indices. I just
>> want either a single-column ascii output of the data values or a binary dump
>> that I can run od on to get same.
>>
>> Can't seem to find the right combo of args in either ncdump or h5dump...
>> --
>> Dr. Christopher Lynnes     NASA/GSFC, Code 610.2    phone: 301-614-5185



  • 2012 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the netcdfgroup archives: