I am trying to use the h5repack utility with netcdf-4 files and it
doesn't seem to work. The data below shows this on a small datafile
included in ncdump/small2.nc. Basically:
* Convert the netcdf-3 format small2.nc to netcdf-4 format using
nccopy -k 4
* Use h5repack on that file to create a third file.
* ncdump can access the original and nccopy'd file
* ncdump give HDF error when accessing the h5repack'd file
* A diff of the h5dump output shows that h5repack seems to replace
DATASET with GROUP...
Are there options to h5repack that can be used to produce a valid netcdf
file?
--Greg
s927819> nccopy -k 4 small2.nc small2.nc4
s927819> h5repack small2.nc4 small2.nc4.rep
s927819> ./ncdump small2.nc4
netcdf small2 {
dimensions:
t = UNLIMITED ; // (1 currently)
m = 5 ;
variables:
byte b(t, m) ;
data:
b =
1, 2, 3, 4, 5 ;
}
s927819> ./ncdump small2.nc4.rep
/Users/gdsjaar/src/SEACAS/TPL/netcdf/netcdf-4.2/ncdump/.libs/ncdump:
small2.nc4.rep: NetCDF: HDF error
s927819> h5dump small2.nc4>good.out
s927819> h5dump small2.nc4.rep>bad.out
s927819> diff -c good.out bad.out
*** good.out 2012-03-20 09:52:47.000000000 -0600
--- bad.out 2012-03-20 09:52:53.000000000 -0600
***************
*** 1,4 ****
! HDF5 "small2.nc4" {
GROUP "/" {
ATTRIBUTE "_nc3_strict" {
DATATYPE H5T_STD_I32LE
--- 1,4 ----
! HDF5 "small2.nc4.rep" {
GROUP "/" {
ATTRIBUTE "_nc3_strict" {
DATATYPE H5T_STD_I32LE
***************
*** 17,23 ****
DATATYPE H5T_VLEN { H5T_REFERENCE { H5T_STD_REF_OBJECT }}
DATASPACE SIMPLE { ( 2 ) / ( 2 ) }
DATA {
! (0): (DATASET 255 /t ), (DATASET 547 /m )
}
}
}
--- 17,23 ----
DATATYPE H5T_VLEN { H5T_REFERENCE { H5T_STD_REF_OBJECT }}
DATASPACE SIMPLE { ( 2 ) / ( 2 ) }
DATA {
! (0): (GROUP 0), (GROUP 0)
}
}
}
***************
*** 59,65 ****
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): {
! DATASET 969 /b ,
1
}
}
--- 59,65 ----
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): {
! GROUP 140734799797120,
1
}
}
***************
*** 102,108 ****
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): {
! DATASET 969 /b ,
0
}
}
--- 102,108 ----
DATASPACE SIMPLE { ( 1 ) / ( 1 ) }
DATA {
(0): {
! GROUP 140734799797120,
0
}
}